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

Function curses_character_dialog

win/curses/cursinit.c:688–739  ·  view source on GitHub ↗

Prompt user for character race, role, alignment, or gender */

Source from the content-addressed store, hash-verified

686
687/* Prompt user for character race, role, alignment, or gender */
688int
689curses_character_dialog(const char **choices, const char *prompt)
690{
691 int count, count2, ret, curletter;
692 char used_letters[invlet_basic]; /* a..zA..Z */
693 anything identifier;
694 menu_item *selected = NULL;
695 winid wid = curses_get_wid(NHW_MENU);
696 int clr = NO_COLOR;
697
698 identifier.a_void = 0;
699 curses_start_menu(wid, MENU_BEHAVE_STANDARD);
700
701 for (count = 0; choices[count]; count++) {
702 curletter = tolower(choices[count][0]);
703 for (count2 = 0; count2 < count; count2++) {
704 if (curletter == used_letters[count2]) {
705 curletter = toupper(curletter);
706 }
707 }
708
709 identifier.a_int = (count + 1); /* Must be non-zero */
710 curses_add_menu(wid, &nul_glyphinfo, &identifier, curletter, 0,
711 A_NORMAL, clr, choices[count], MENU_ITEMFLAGS_NONE);
712 used_letters[count] = curletter;
713 }
714
715 /* Random Selection */
716 identifier.a_int = ROLE_RANDOM;
717 curses_add_menu(wid, &nul_glyphinfo, &identifier, '*', 0,
718 A_NORMAL, clr, "Random", MENU_ITEMFLAGS_NONE);
719
720 /* Quit prompt */
721 identifier.a_int = ROLE_NONE;
722 curses_add_menu(wid, &nul_glyphinfo, &identifier, 'q', 0,
723 A_NORMAL, clr, "Quit", MENU_ITEMFLAGS_NONE);
724 curses_end_menu(wid, prompt);
725 ret = curses_select_menu(wid, PICK_ONE, &selected);
726 if (ret == 1) {
727 ret = (selected->item.a_int);
728 } else { /* Cancelled selection */
729
730 ret = ROLE_NONE;
731 }
732
733 if (ret > 0) {
734 ret--;
735 }
736
737 free((genericptr_t) selected);
738 return ret;
739}
740
741#endif /* 0 */
742

Callers 1

curses_choose_characterFunction · 0.85

Calls 5

curses_get_widFunction · 0.85
curses_start_menuFunction · 0.85
curses_add_menuFunction · 0.85
curses_end_menuFunction · 0.85
curses_select_menuFunction · 0.85

Tested by

no test coverage detected