nuclear@0: #include nuclear@1: #include nuclear@0: #include "opt.h" nuclear@0: nuclear@0: enum { nuclear@0: OPT_SIZE, nuclear@0: OPT_FULLSCREEN, nuclear@0: OPT_WINDOWED, nuclear@0: OPT_VR, nuclear@0: OPT_HELP, nuclear@0: nuclear@0: NUM_OPTS nuclear@0: }; nuclear@0: static const char *optname[] = { nuclear@0: "size", "fullscreen", "windowed", "vr", "help", 0 nuclear@0: }; nuclear@0: nuclear@0: static int get_option(const char *str); nuclear@0: nuclear@0: void default_opt(Options *opt) nuclear@0: { nuclear@0: opt->xres = 1280; nuclear@0: opt->yres = 800; nuclear@0: opt->fov = 50.0; nuclear@0: opt->fullscreen = false; nuclear@0: opt->use_vr = false; nuclear@0: } nuclear@0: nuclear@0: bool parse_args(Options *opt, int argc, char **argv) nuclear@0: { nuclear@0: for(int i=1; ixres, &opt->yres) != 2) { nuclear@0: fprintf(stderr, "invalid argument to option: %s\n", argv[i - 1]); nuclear@0: return false; nuclear@0: } nuclear@0: break; nuclear@0: nuclear@0: case OPT_FULLSCREEN: nuclear@0: opt->fullscreen = true; nuclear@0: break; nuclear@0: case OPT_WINDOWED: nuclear@0: opt->fullscreen = false; nuclear@0: break; nuclear@0: nuclear@0: case OPT_VR: nuclear@0: opt->use_vr = true; nuclear@0: break; nuclear@0: nuclear@0: case OPT_HELP: nuclear@0: printf("options:\n"); nuclear@0: for(int j=0; optname[j]; j++) { nuclear@0: printf(" -%s\n", optname[j]); nuclear@0: } nuclear@0: break; nuclear@0: } nuclear@0: } nuclear@0: } nuclear@1: return true; nuclear@0: } nuclear@0: nuclear@0: static int get_option(const char *str) nuclear@0: { nuclear@1: for(int i=0; optname[i]; i++) { nuclear@0: if(strcmp(str, optname[i]) == 0) { nuclear@0: return i; nuclear@0: } nuclear@0: } nuclear@0: return -1; nuclear@0: }