aboutsummaryrefslogtreecommitdiff
path: root/src/sdl/draw.c
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2019-01-19 02:08:20 -0500
committerPaul Duncan <pabs@pablotron.org>2019-01-19 02:08:20 -0500
commitdf5ca740fa8e438e6bc67fe1ed078aa983ffeed5 (patch)
tree89a592a077d733c5d92e323f24611fb1ae1e1d83 /src/sdl/draw.c
parentfb0bdfed8ed7758e7f073ca85a5d1cefe4fea633 (diff)
downloadsok-df5ca740fa8e438e6bc67fe1ed078aa983ffeed5.tar.bz2
sok-df5ca740fa8e438e6bc67fe1ed078aa983ffeed5.zip
add fading, fix sounds
Diffstat (limited to 'src/sdl/draw.c')
-rw-r--r--src/sdl/draw.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/sdl/draw.c b/src/sdl/draw.c
index d95e83f..e980131 100644
--- a/src/sdl/draw.c
+++ b/src/sdl/draw.c
@@ -11,6 +11,7 @@
#define M_2_PI (2.0 * 3.1415926)
#define BUMP_TIME 300
+#define FADE_TIME 200
static size_t
get_cell_size(
@@ -297,7 +298,6 @@ draw_solve_moves_text(
draw_text(draw_ctx->renderer, draw_ctx->font, style, buf);
}
-
static void
draw_bg(
draw_ctx_t * const draw_ctx
@@ -320,6 +320,31 @@ draw_bg(
SDL_RenderClear(draw_ctx->renderer);
}
+static void
+draw_fade(
+ draw_ctx_t * const draw_ctx
+) {
+ // check timestamp
+ if (SDL_TICKS_PASSED(draw_ctx->ticks, draw_ctx->fade_ticks + FADE_TIME)) {
+ return;
+ }
+
+ // calculate alpha mod
+ const Uint32 delta = (draw_ctx->ticks - draw_ctx->fade_ticks);
+ const Uint8 alpha = 255 - 255.0 * delta / FADE_TIME;
+
+ // set alpha mod
+ if (SDL_SetTextureAlphaMod(draw_ctx->fade_tex, alpha)) {
+ die("SDL_TextureSetAlphaMod(): %s", SDL_GetError());
+ }
+ // SDL_Log("delta = %u, alpha = %d", delta, alpha);
+
+ // draw texture
+ if (SDL_RenderCopy(draw_ctx->renderer, draw_ctx->fade_tex, NULL, NULL)) {
+ die("SDL_RenderCopy(): %s", SDL_GetError());
+ }
+}
+
void
draw(
draw_ctx_t * const draw_ctx
@@ -340,6 +365,9 @@ draw(
draw_solve_wait_text(draw_ctx);
draw_solve_moves_text(draw_ctx);
+ // draw fade overlay
+ draw_fade(draw_ctx);
+
// flip
SDL_RenderPresent(draw_ctx->renderer);
}