comparison urogue/options.c @ 293:9dcf3344d3fd

UltraRogue: fix changing the score option. Changing the score file now works again, if use_savedir is not set. If it is, an error message is shown.
author John "Elwin" Edwards
date Fri, 29 Dec 2017 17:38:08 -0500
parents 2b452dbf0138
children 0250220d8cdd
comparison
equal deleted inserted replaced
292:ebf49a933e51 293:9dcf3344d3fd
22 22
23 #define NUM_OPTS (sizeof optlist / sizeof (OPTION)) 23 #define NUM_OPTS (sizeof optlist / sizeof (OPTION))
24 #define EQSTR(a, b, c) (strncmp(a, b, c) == 0) 24 #define EQSTR(a, b, c) (strncmp(a, b, c) == 0)
25 25
26 int get_restr(opt_arg *opt, WINDOW *win); 26 int get_restr(opt_arg *opt, WINDOW *win);
27 int get_score(opt_arg *opt, WINDOW *win);
27 28
28 /* description of an option and what to do with it */ 29 /* description of an option and what to do with it */
29 static OPTION optlist[] = 30 static OPTION optlist[] =
30 { 31 {
31 {"jump","Show position only at end of run (jump): ", &jump,put_bool,get_bool}, 32 {"jump","Show position only at end of run (jump): ", &jump,put_bool,get_bool},
33 {"askme","Ask me about unidentified things (askme): ",&askme,put_bool,get_bool}, 34 {"askme","Ask me about unidentified things (askme): ",&askme,put_bool,get_bool},
34 {"doorstop","Stop running when adjacent (doorstop): ",&doorstop,put_bool,get_bool}, 35 {"doorstop","Stop running when adjacent (doorstop): ",&doorstop,put_bool,get_bool},
35 {"name", "Name (name): ", &whoami, put_str, get_restr}, 36 {"name", "Name (name): ", &whoami, put_str, get_restr},
36 {"fruit", "Fruit (fruit): ", &fruit, put_str, get_str}, 37 {"fruit", "Fruit (fruit): ", &fruit, put_str, get_str},
37 {"file", "Save file (file): ", &file_name, put_str, get_restr}, 38 {"file", "Save file (file): ", &file_name, put_str, get_restr},
38 {"score", "Score file (score): ", &score_file, put_str, get_restr}, 39 {"score", "Score file (score): ", &score_file, put_str, get_score},
39 {"class", "Character class (class): ",&char_type, put_abil, get_abil} 40 {"class", "Character class (class): ",&char_type, put_abil, get_abil}
40 }; 41 };
41 42
42 /* 43 /*
43 option() 44 option()
581 wmove(win, ny, nx); 582 wmove(win, ny, nx);
582 waddch(win, '\n'); 583 waddch(win, '\n');
583 584
584 return(NORM); 585 return(NORM);
585 } 586 }
587
588 int
589 get_score(opt_arg *opt, WINDOW *win)
590 {
591 char old_score_file[2*LINELEN];
592 int status;
593
594 if (use_savedir)
595 return get_restr(opt, win);
596
597 strncpy(old_score_file, opt->str, 2*LINELEN);
598 old_score_file[2*LINELEN - 1] = '\0';
599 status = get_str(opt, win);
600 if (status == NORM && strcmp(old_score_file, opt->str)) {
601 fclose(fd_score);
602 fd_score = fopen(score_file, "r+");
603 if (fd_score == NULL)
604 fd_score = fopen(score_file, "a+");
605 }
606 return status;
607 }