From c5d80edf8a98bc99ede72b6bcb9f5bbcc1384786 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Thu, 14 Dec 2006 03:30:59 +0000 Subject: [PATCH] restore_menu for >52 saved games (trunk only) There's no need to restrict the menu of restoreable games to 52 in order to stay within a-zA-Z for entries; just let add_menu() do its own selector assignments (reusing letters on each page). --- src/restore.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/restore.c b/src/restore.c index 8d26bc733..607aafdb8 100644 --- a/src/restore.c +++ b/src/restore.c @@ -1259,30 +1259,19 @@ winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */ } add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, "Select one of your saved games", MENU_UNSELECTED); - /* limited to 52 character entries, a-zA-Z, plus new game (as '#' - if necessary) and quit (omitted if new game ended up as '#') */ - for (k = 0, clet = 'a'; saved[k] && k < 52; ++k) { + for (k = 0; saved[k]; ++k) { any.a_int = k + 1; - add_menu(tmpwin, NO_GLYPH, &any, clet, 0, + add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, saved[k], MENU_UNSELECTED); - if (clet == 'z') clet = 'A'; - else if (clet == 'Z') clet = '#'; /* use NOINVSYM for overflow */ - else ++clet; } - if (clet >= 'a' && clet < 'n') clet = 'n'; /* new game */ + clet = (k <= 'n' - 'a') ? 'n' : 0; /* new game */ any.a_int = -1; /* not >= 0 */ add_menu(tmpwin, NO_GLYPH, &any, clet, 0, ATR_NONE, "Start a new character", MENU_UNSELECTED); - /* quit entry is preselected, but omitted if there's no room */ - if (clet != '#') { - if (clet >= 'a' && clet < 'q') clet = 'q'; /* quit */ - else if (clet == 'z') clet = 'A'; - else if (clet == 'Z') clet = '#'; - else ++clet; - any.a_int = -2; - add_menu(tmpwin, NO_GLYPH, &any, clet, 0, - ATR_NONE, "Never mind (quit)", MENU_SELECTED); - } + clet = (k + 1 <= 'q' - 'a') ? 'q' : 0; /* quit */ + any.a_int = -2; + add_menu(tmpwin, NO_GLYPH, &any, clet, 0, + ATR_NONE, "Never mind (quit)", MENU_SELECTED); /* no prompt on end_menu, as we've done our own at the top */ end_menu(tmpwin, (char *)0); if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) {