MCPcopy Create free account
hub / github.com/NetHack/NetHack / handler_number_pad

Function handler_number_pad

src/options.c:5892–5950  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5890}
5891
5892staticfn int
5893handler_number_pad(void)
5894{
5895 winid tmpwin;
5896 anything any;
5897 int i;
5898 static const char *const npchoices[] = {
5899 " 0 (off)", " 1 (on)", " 2 (on, MSDOS compatible)",
5900 " 3 (on, phone-style digit layout)",
5901 " 4 (on, phone-style layout, MSDOS compatible)",
5902 "-1 (off, 'z' to move upper-left, 'y' to zap wands)"
5903 };
5904 menu_item *mode_pick = (menu_item *) 0;
5905 int clr = NO_COLOR;
5906
5907 tmpwin = create_nhwindow(NHW_MENU);
5908 start_menu(tmpwin, MENU_BEHAVE_STANDARD);
5909 any = cg.zeroany;
5910 for (i = 0; i < SIZE(npchoices); i++) {
5911 any.a_int = i + 1;
5912 add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i, '0' + i,
5913 ATR_NONE, clr, npchoices[i], MENU_ITEMFLAGS_NONE);
5914 }
5915 end_menu(tmpwin, "Select number_pad mode:");
5916 if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
5917 switch (mode_pick->item.a_int - 1) {
5918 case 0:
5919 iflags.num_pad = FALSE;
5920 iflags.num_pad_mode = 0;
5921 break;
5922 case 1:
5923 iflags.num_pad = TRUE;
5924 iflags.num_pad_mode = 0;
5925 break;
5926 case 2:
5927 iflags.num_pad = TRUE;
5928 iflags.num_pad_mode = 1;
5929 break;
5930 case 3:
5931 iflags.num_pad = TRUE;
5932 iflags.num_pad_mode = 2;
5933 break;
5934 case 4:
5935 iflags.num_pad = TRUE;
5936 iflags.num_pad_mode = 3;
5937 break;
5938 /* last menu choice: number_pad == -1 */
5939 case 5:
5940 iflags.num_pad = FALSE;
5941 iflags.num_pad_mode = 1;
5942 break;
5943 }
5944 reset_commands(FALSE);
5945 number_pad(iflags.num_pad ? 1 : 0);
5946 free((genericptr_t) mode_pick);
5947 }
5948 destroy_nhwindow(tmpwin);
5949 return optn_ok;

Callers 1

optfn_number_padFunction · 0.85

Calls 3

add_menuFunction · 0.85
select_menuFunction · 0.85
reset_commandsFunction · 0.85

Tested by

no test coverage detected