summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hungrycat.c21
-rw-r--r--src/sars.c4
-rw-r--r--src/sars.h1
3 files changed, 22 insertions, 4 deletions
diff --git a/src/hungrycat.c b/src/hungrycat.c
index d31b8e3..41474ef 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_WAIT,
HUNGRYCAT_STATE_DELAY,
HUNGRYCAT_STATE_FADEIN,
HUNGRYCAT_STATE_SHOW,
@@ -71,9 +72,13 @@ static void * hungrycat_init(play_t *play, int argc, char *argv[], unsigned flag
static void hungrycat_enter(play_t *play, void *context)
{
hungrycat_t *hungrycat = context;
+ sars_t *sars = play_context(play, SARS_CONTEXT_SARS);
assert(hungrycat);
+ if (!sars->wait)
+ hungrycat->state = HUNGRYCAT_STATE_DELAY;
+
play_ticks_reset(play, HUNGRYCAT_FADE_TIMER);
}
@@ -92,6 +97,11 @@ static void hungrycat_update(play_t *play, void *context)
assert(hungrycat);
switch (hungrycat->state) {
+ case HUNGRYCAT_STATE_WAIT:
+ /* just wait indefinitely until an ESC is pressed (see hungrycat_dispatch()) */
+ stage_dirty(hungrycat->node);
+ break;
+
case HUNGRYCAT_STATE_DELAY:
stage_dirty(hungrycat->node);
if (!play_ticks_elapsed(play, HUNGRYCAT_FADE_TIMER, sars->delay_seconds * 1000))
@@ -168,11 +178,16 @@ static void hungrycat_dispatch(play_t *play, void *context, SDL_Event *event)
switch (event->type) {
case SDL_KEYDOWN:
- if (event->key.keysym.sym == SDLK_ESCAPE)
- exit(0);
+ if (event->key.keysym.sym == SDLK_ESCAPE) {
+ if (hungrycat->state != HUNGRYCAT_STATE_WAIT)
+ exit(0);
+
+ hungrycat->state = HUNGRYCAT_STATE_DELAY;
+ }
/* fallthrough */
case SDL_FINGERDOWN:
- if (hungrycat->state != HUNGRYCAT_STATE_DELAY)
+ if (hungrycat->state != HUNGRYCAT_STATE_WAIT &&
+ hungrycat->state != HUNGRYCAT_STATE_DELAY)
play_context_enter(play, SARS_CONTEXT_GAME);
break;
diff --git a/src/sars.c b/src/sars.c
index 0c6295e..21f87e3 100644
--- a/src/sars.c
+++ b/src/sars.c
@@ -260,10 +260,12 @@ static int sars_parse_argv(sars_t *sars, int argc, char *argv[])
sars->delay_seconds = SARS_DEFAULT_DELAY_SECS;
if (i + 1 < argc && argv[i + 1][0] != '-' && argv[i + 1][1] != '-') {
- /* --wait SECONDS is optionally supported */
+ /* --delay SECONDS is optionally supported */
sscanf(argv[i + 1], "%u", &sars->delay_seconds); /* FIXME: parse errors */
i++;
}
+ } else if (!strcmp(flag, "--wait")) {
+ sars->wait = 1;
} else {
warn_if(1, "Unsupported flag \"%s\", ignoring", argv[i]);
} /* TODO: add --fullscreen? */
diff --git a/src/sars.h b/src/sars.h
index b83ffb5..5156112 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 wait:1;
unsigned delay_seconds;
m4f_t projection_x;
© All Rights Reserved