diff options
author | Paul Duncan <pabs@pablotron.org> | 2019-01-19 02:08:20 -0500 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2019-01-19 02:08:20 -0500 |
commit | df5ca740fa8e438e6bc67fe1ed078aa983ffeed5 (patch) | |
tree | 89a592a077d733c5d92e323f24611fb1ae1e1d83 /src/sdl/draw.c | |
parent | fb0bdfed8ed7758e7f073ca85a5d1cefe4fea633 (diff) | |
download | sok-df5ca740fa8e438e6bc67fe1ed078aa983ffeed5.tar.bz2 sok-df5ca740fa8e438e6bc67fe1ed078aa983ffeed5.zip |
add fading, fix sounds
Diffstat (limited to 'src/sdl/draw.c')
-rw-r--r-- | src/sdl/draw.c | 30 |
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); } |