interactive number_pad handling

Make the interactive display and handling of number_pad
from the 'O' menu a little more friendly.
This commit is contained in:
nethack.allison
2003-06-08 18:33:13 +00:00
parent ec13f16ff7
commit 32d71e5993

View File

@@ -2468,8 +2468,8 @@ boolean setinitial,setfromfile;
char buf[BUFSZ];
boolean retval = FALSE;
/* Special handling of menustyle, pickup_burden, and pickup_types,
disclose, runmode, and msg_window options. */
/* Special handling of menustyle, pickup_burden, pickup_types,
disclose, runmode, msg_window, and number_pad options. */
if (!strcmp("menustyle", optname)) {
const char *style_name;
menu_item *style_pick = (menu_item *)0;
@@ -2653,6 +2653,41 @@ boolean setinitial,setfromfile;
destroy_nhwindow(tmpwin);
retval = TRUE;
}
else if (!strcmp("number_pad", optname)) {
int i;
const char *npchoices[3] =
{"0 (off)", "1 (on)", "2 (on, DOS compatible)"};
char *npletters = "abc";
menu_item *mode_pick = (menu_item *)0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin);
for (i = 0; i < SIZE(npchoices); i++) {
any.a_int = i + 1;
add_menu(tmpwin, NO_GLYPH, &any, npletters[i], 0,
ATR_NONE, npchoices[i], MENU_UNSELECTED);
}
end_menu(tmpwin, "Select number_pad mode:");
if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
int mode = mode_pick->item.a_int - 1;
switch(mode) {
case 2:
iflags.num_pad = 1;
iflags.num_pad_mode = 1;
break;
case 1:
iflags.num_pad = 1;
iflags.num_pad_mode = 0;
break;
case 0:
default:
iflags.num_pad = 0;
iflags.num_pad_mode = 0;
}
free((genericptr_t)mode_pick);
}
destroy_nhwindow(tmpwin);
retval = TRUE;
}
return retval;
}
@@ -2802,6 +2837,10 @@ char *buf;
#endif
else if (!strcmp(optname, "name"))
Sprintf(buf, "%s", plname);
else if (!strcmp(optname, "number_pad"))
Sprintf(buf, "%s",
(!iflags.num_pad) ? "0=off" :
(iflags.num_pad_mode) ? "2=on, DOS compatible" : "1=on");
else if (!strcmp(optname, "objects"))
Sprintf(buf, "%s", to_be_done);
else if (!strcmp(optname, "packorder")) {