Mercurial > hg > early-roguelike
diff 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 |
line wrap: on
line diff
--- a/arogue7/options.c Mon May 18 10:53:22 2015 -0400 +++ b/arogue7/options.c Wed May 20 08:42:17 2015 -0400 @@ -50,6 +50,7 @@ put_quest(); int get_str_prot(char *opt, WINDOW *win); +int get_score(char *opt, WINDOW *win); bool allowchange(OPTION *op); OPTION optlist[] = { @@ -72,7 +73,7 @@ {"file", "Save file: ", (int *) file_name, put_str, get_str_prot }, {"score", "Score file: ", - (int *) score_file, put_str, get_str_prot }, + (int *) score_file, put_str, get_score }, {"class", "Character class: ", (int *)&char_type, put_abil, get_abil }, {"quest", "Quest item: ", @@ -486,6 +487,25 @@ } } +/* When getting the scorefile, the new file must be opened. */ +int +get_score(char *optstr, WINDOW *win) +{ + char old_score_file[LINELEN]; + int status; + + if (use_savedir) + return get_str_prot(optstr, win); + + strcpy(old_score_file, optstr); + status = get_str(optstr, win); + if (status == NORM && strcmp(old_score_file, optstr)) + { + md_reopen_score(); + } + return status; +} + bool allowchange(OPTION *op) {