summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2022-12-13 18:13:34 -0800
committerVito Caputo <vcaputo@pengaru.com>2022-12-13 18:30:00 -0800
commitfd2f60fc3ae64408a82259f5bd8351fc53f27bb0 (patch)
tree22cf5655376e853fd5216ff647fb70284fa1df32 /src
parent6a1c41149ad50d975b6ed5d7a5ef248c1ccba4cf (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.c12
-rw-r--r--src/sars.c10
-rw-r--r--src/sars.h1
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)) {
diff --git a/src/sars.c b/src/sars.c
index 0e1d387..0c6295e 100644
--- a/src/sars.c
+++ b/src/sars.c
@@ -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? */
diff --git a/src/sars.h b/src/sars.h
index 7e0c98b..b83ffb5 100644
--- a/src/sars.h
+++ b/src/sars.h
@@ -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;
© All Rights Reserved