diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-12-05 19:50:27 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-12-05 19:50:27 -0800 |
commit | 645ba66e2dabafd6edda743347ce420174ec4274 (patch) | |
tree | f1a1e542468ecac07a61f996bac8c94cff2a1271 /src/sars.c | |
parent | 1d8f30eb26a13c5be62526e201948aaa16caf236 (diff) |
sars,game: add --cheat flag intended for dev/testing
currently this just overrides teepee quantities to always be 128
128 is used instead of 256 so you can still exercise the teepee
boost _without_ winning event, and it doesn't take long to
collect two teepee boosts so iteration still isn't bad.
Diffstat (limited to 'src/sars.c')
-rw-r--r-- | src/sars.c | 38 |
1 files changed, 28 insertions, 10 deletions
@@ -236,6 +236,33 @@ sars_winmode_t sars_winmode_set(sars_t *sars, sars_winmode_t winmode) } +/* returns -errno on failure, 0 on success + * but prints errors/warnings so the caller probably doesn't + * care about the errno beyond being a negative value. + */ +static int sars_parse_argv(sars_t *sars, int argc, char *argv[]) +{ + for (int i = 1; i < argc; i++) { + char *flag = argv[i]; + + if (!strcmp(flag, "--window")) { + sars->winmode = SARS_WINMODE_WINDOW; /* this is kinda redundant since we default to windowed now (except on emscripten) */ + if (i + 1 < argc && argv[i + 1][0] != '-' && argv[i + 1][1] != '-') { + /* --window WxH is optionally supported */ + sscanf(argv[i + 1], "%ux%u", &sars->window_width, &sars->window_height); /* FIXME: parse errors */ + i++; + } + } else if (!strcmp(flag, "--cheat")) { + sars->cheat = 1; + } else { + warn_if(1, "Unsupported flag \"%s\", ignoring", argv[i]); + } /* TODO: add --fullscreen? */ + } + + return 0; +} + + static void * sars_init(play_t *play, int argc, char *argv[], unsigned flags) { sars_t *sars; @@ -260,16 +287,7 @@ static void * sars_init(play_t *play, int argc, char *argv[], unsigned flags) sars->window_height = SARS_DEFAULT_HEIGHT; sars->winmode = SARS_DEFAULT_WINMODE; - if (argc > 1) { - /* for now just support --window [WxH] */ - if (!strcasecmp(argv[1], "--window")) { - sars->winmode = SARS_WINMODE_WINDOW; /* this is kinda redundant since we default to windowed now */ - - if (argc > 2) - sscanf(argv[2], "%ux%u", &sars->window_width, &sars->window_height); - } - /* TODO: add --fullscreen? */ - } + fatal_if(sars_parse_argv(sars, argc, argv) < 0, "Unable to parse argv"); #ifdef __EMSCRIPTEN__ /* XXX only request an actual GLES2 context on emscripten, |