diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-12-13 18:13:34 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-12-13 18:30:00 -0800 |
commit | fd2f60fc3ae64408a82259f5bd8351fc53f27bb0 (patch) | |
tree | 22cf5655376e853fd5216ff647fb70284fa1df32 /src | |
parent | 6a1c41149ad50d975b6ed5d7a5ef248c1ccba4cf (diff) |
sars: add --delay [seconds] flag
Defaults to 10 seconds when bare --delay is used
This is primarily intended for video capture purposes
Diffstat (limited to 'src')
-rw-r--r-- | src/hungrycat.c | 12 | ||||
-rw-r--r-- | src/sars.c | 10 | ||||
-rw-r--r-- | src/sars.h | 1 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/hungrycat.c b/src/hungrycat.c index 087651c..504ca80 100644 --- a/src/hungrycat.c +++ b/src/hungrycat.c @@ -36,6 +36,7 @@ #define HUNGRYCAT_FADE_TIMER PLAY_TICKS_TIMER0 typedef enum hungrycat_state_t { + HUNGRYCAT_STATE_DELAY, HUNGRYCAT_STATE_FADEIN, HUNGRYCAT_STATE_SHOW, HUNGRYCAT_STATE_FADEOUT, @@ -73,7 +74,6 @@ static void hungrycat_enter(play_t *play, void *context) assert(hungrycat); - play_music_set(play, 0, "assets/hungrycat.ogg"); play_ticks_reset(play, HUNGRYCAT_FADE_TIMER); } @@ -86,11 +86,21 @@ static float fade_t(play_t *play) static void hungrycat_update(play_t *play, void *context) { + sars_t *sars = play_context(play, SARS_CONTEXT_SARS); hungrycat_t *hungrycat = context; assert(hungrycat); switch (hungrycat->state) { + case HUNGRYCAT_STATE_DELAY: + stage_dirty(hungrycat->node); + if (!play_ticks_elapsed(play, HUNGRYCAT_FADE_TIMER, sars->delay_seconds * 1000)) + break; + + play_music_set(play, 0, "assets/hungrycat.ogg"); + hungrycat->state = HUNGRYCAT_STATE_FADEIN; + break; + case HUNGRYCAT_STATE_FADEIN: stage_dirty(hungrycat->node); if (!play_ticks_elapsed(play, HUNGRYCAT_FADE_TIMER, HUNGRYCAT_FADE_MS)) { @@ -38,6 +38,8 @@ #define SARS_DEFAULT_WINMODE SARS_WINMODE_WINDOW #endif +#define SARS_DEFAULT_DELAY_SECS 10 + #define SARS_WINDOW_FLAGS (SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL | SDL_WINDOW_ALLOW_HIGHDPI) @@ -254,6 +256,14 @@ static int sars_parse_argv(sars_t *sars, int argc, char *argv[]) } } else if (!strcmp(flag, "--cheat")) { sars->cheat = 1; + } else if (!strcmp(flag, "--delay")) { + sars->delay_seconds = SARS_DEFAULT_DELAY_SECS; + + if (i + 1 < argc && argv[i + 1][0] != '-' && argv[i + 1][1] != '-') { + /* --wait SECONDS is optionally supported */ + sscanf(argv[i + 1], "%u", &sars->delay_seconds); /* FIXME: parse errors */ + i++; + } } else { warn_if(1, "Unsupported flag \"%s\", ignoring", argv[i]); } /* TODO: add --fullscreen? */ @@ -44,6 +44,7 @@ typedef struct sars_t { unsigned window_width, window_height; sars_winmode_t winmode; unsigned cheat:1; + unsigned delay_seconds; m4f_t projection_x; m4f_t projection_x_inv; |