vrseasons
diff src/opt.cc @ 0:393ef1143c9c
VR seasons
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 07 Apr 2015 11:16:56 +0300 |
parents | |
children | 65c2e37c48b2 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/opt.cc Tue Apr 07 11:16:56 2015 +0300 1.3 @@ -0,0 +1,71 @@ 1.4 +#include <stdio.h> 1.5 +#include "opt.h" 1.6 + 1.7 +enum { 1.8 + OPT_SIZE, 1.9 + OPT_FULLSCREEN, 1.10 + OPT_WINDOWED, 1.11 + OPT_VR, 1.12 + OPT_HELP, 1.13 + 1.14 + NUM_OPTS 1.15 +}; 1.16 +static const char *optname[] = { 1.17 + "size", "fullscreen", "windowed", "vr", "help", 0 1.18 +}; 1.19 + 1.20 +static int get_option(const char *str); 1.21 + 1.22 +void default_opt(Options *opt) 1.23 +{ 1.24 + opt->xres = 1280; 1.25 + opt->yres = 800; 1.26 + opt->fov = 50.0; 1.27 + opt->fullscreen = false; 1.28 + opt->use_vr = false; 1.29 +} 1.30 + 1.31 +bool parse_args(Options *opt, int argc, char **argv) 1.32 +{ 1.33 + for(int i=1; i<argc; i++) { 1.34 + if(argv[i][0] == '-') { 1.35 + int o = get_option(argv[i] + 1); 1.36 + switch(o) { 1.37 + case OPT_SIZE: 1.38 + if(sscanf(argv[++i], "%dx%d", &opt->xres, &opt->yres) != 2) { 1.39 + fprintf(stderr, "invalid argument to option: %s\n", argv[i - 1]); 1.40 + return false; 1.41 + } 1.42 + break; 1.43 + 1.44 + case OPT_FULLSCREEN: 1.45 + opt->fullscreen = true; 1.46 + break; 1.47 + case OPT_WINDOWED: 1.48 + opt->fullscreen = false; 1.49 + break; 1.50 + 1.51 + case OPT_VR: 1.52 + opt->use_vr = true; 1.53 + break; 1.54 + 1.55 + case OPT_HELP: 1.56 + printf("options:\n"); 1.57 + for(int j=0; optname[j]; j++) { 1.58 + printf(" -%s\n", optname[j]); 1.59 + } 1.60 + break; 1.61 + } 1.62 + } 1.63 + } 1.64 +} 1.65 + 1.66 +static int get_option(const char *str) 1.67 +{ 1.68 + for(int i=0; optname[i], i++) { 1.69 + if(strcmp(str, optname[i]) == 0) { 1.70 + return i; 1.71 + } 1.72 + } 1.73 + return -1; 1.74 +}