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

Function tty_askname

win/tty/wintty.c:650–755  ·  view source on GitHub ↗

* svp.plname is filled either by an option (-u Player or -uPlayer) or * explicitly (by being the wizard) or by askname. * It may still contain a suffix denoting the role, etc. * Always called after init_nhwindows() and before * init_sound_disp_gamewindows(). */

Source from the content-addressed store, hash-verified

648 * init_sound_disp_gamewindows().
649 */
650void
651tty_askname(void)
652{
653 static const char who_are_you[] = "Who are you? ";
654 int c, ct, tryct = 0;
655
656#ifdef SELECTSAVED
657 if (iflags.wc2_selectsaved && !iflags.renameinprogress)
658 switch (restore_menu(BASE_WINDOW)) {
659 case -1:
660 bail("Until next time then..."); /* quit */
661 /*NOTREACHED*/
662 break;
663 case 0:
664 break; /* no game chosen; start new game */
665 case 1:
666 return; /* svp.plname[] has been set */
667 }
668#endif /* SELECTSAVED */
669
670 tty_putstr(BASE_WINDOW, 0, "");
671 do {
672 if (++tryct > 1) {
673 if (tryct > 10)
674 bail("Giving up after 10 tries.\n");
675 tty_curs(BASE_WINDOW, 1, wins[BASE_WINDOW]->cury - 1);
676 tty_putstr(BASE_WINDOW, 0, "Enter a name for your character...");
677 /* erase previous prompt (in case of ESC after partial response) */
678 tty_curs(BASE_WINDOW, 1, wins[BASE_WINDOW]->cury), cl_end();
679 }
680 tty_putstr(BASE_WINDOW, 0, who_are_you);
681 tty_curs(BASE_WINDOW, (int) (sizeof who_are_you),
682 wins[BASE_WINDOW]->cury - 1);
683 ct = 0;
684 while ((c = tty_nhgetch()) != '\n') {
685 if (c == EOF)
686 c = '\033';
687 if (c == '\r')
688 break;
689 if (c == '\033') {
690 ct = 0;
691 break;
692 } /* continue outer loop */
693#if defined(WIN32CON)
694 if (c == '\003')
695 bail("^C abort.\n");
696#endif
697 /* some people get confused when their erase char is not ^H */
698 if (c == '\b' || c == '\177') {
699 if (ct) {
700 ct--;
701#ifdef WIN32CON
702 ttyDisplay->curx--;
703#endif
704#if defined(MICRO) || defined(WIN32CON)
705#if defined(WIN32CON) || defined(MSDOS)
706 backsp(); /* \b is visible on NT */
707 (void) putchar(' ');

Callers

nothing calls this directly

Calls 8

restore_menuFunction · 0.85
tty_putstrFunction · 0.85
tty_cursFunction · 0.85
tty_nhgetchFunction · 0.85
msmsgFunction · 0.85
bailFunction · 0.70
cl_endFunction · 0.70
backspFunction · 0.70

Tested by

no test coverage detected