Mercurial > hg > early-roguelike
comparison arogue7/options.c @ 145:aac28331e71d
Advanced Rogue family: fix the "score" option.
Changing the score file (when permitted) now works again, closing the
old score file and opening the new one.
| author | John "Elwin" Edwards |
|---|---|
| date | Wed, 20 May 2015 08:42:17 -0400 |
| parents | 9c4e50b5825c |
| children | a307ff9cd95e |
comparison
equal
deleted
inserted
replaced
| 144:708bb2dea17c | 145:aac28331e71d |
|---|---|
| 48 get_abil(), | 48 get_abil(), |
| 49 get_quest(), | 49 get_quest(), |
| 50 put_quest(); | 50 put_quest(); |
| 51 | 51 |
| 52 int get_str_prot(char *opt, WINDOW *win); | 52 int get_str_prot(char *opt, WINDOW *win); |
| 53 int get_score(char *opt, WINDOW *win); | |
| 53 bool allowchange(OPTION *op); | 54 bool allowchange(OPTION *op); |
| 54 | 55 |
| 55 OPTION optlist[] = { | 56 OPTION optlist[] = { |
| 56 {"terse", "Terse output: ", | 57 {"terse", "Terse output: ", |
| 57 (int *) &terse, put_bool, get_bool }, | 58 (int *) &terse, put_bool, get_bool }, |
| 70 {"name", "Name: ", | 71 {"name", "Name: ", |
| 71 (int *) whoami, put_str, get_str_prot }, | 72 (int *) whoami, put_str, get_str_prot }, |
| 72 {"file", "Save file: ", | 73 {"file", "Save file: ", |
| 73 (int *) file_name, put_str, get_str_prot }, | 74 (int *) file_name, put_str, get_str_prot }, |
| 74 {"score", "Score file: ", | 75 {"score", "Score file: ", |
| 75 (int *) score_file, put_str, get_str_prot }, | 76 (int *) score_file, put_str, get_score }, |
| 76 {"class", "Character class: ", | 77 {"class", "Character class: ", |
| 77 (int *)&char_type, put_abil, get_abil }, | 78 (int *)&char_type, put_abil, get_abil }, |
| 78 {"quest", "Quest item: ", | 79 {"quest", "Quest item: ", |
| 79 (int *) &quest_item, put_quest, get_quest } | 80 (int *) &quest_item, put_quest, get_quest } |
| 80 }; | 81 }; |
| 484 else { | 485 else { |
| 485 return get_str(opt, win); | 486 return get_str(opt, win); |
| 486 } | 487 } |
| 487 } | 488 } |
| 488 | 489 |
| 490 /* When getting the scorefile, the new file must be opened. */ | |
| 491 int | |
| 492 get_score(char *optstr, WINDOW *win) | |
| 493 { | |
| 494 char old_score_file[LINELEN]; | |
| 495 int status; | |
| 496 | |
| 497 if (use_savedir) | |
| 498 return get_str_prot(optstr, win); | |
| 499 | |
| 500 strcpy(old_score_file, optstr); | |
| 501 status = get_str(optstr, win); | |
| 502 if (status == NORM && strcmp(old_score_file, optstr)) | |
| 503 { | |
| 504 md_reopen_score(); | |
| 505 } | |
| 506 return status; | |
| 507 } | |
| 508 | |
| 489 bool | 509 bool |
| 490 allowchange(OPTION *op) | 510 allowchange(OPTION *op) |
| 491 { | 511 { |
| 492 if (!use_savedir) | 512 if (!use_savedir) |
| 493 return TRUE; | 513 return TRUE; |
