Mercurial > hg > early-roguelike
diff arogue5/command.c @ 76:ad2cb9a07aaa
arogue5: fix player's typed responses getting put at the wrong place.
Some sections of code that prompt the user for a string of input were
calling get_str() with cw (the player-visible screen containing the
map), which caused whatever the player typed to get printed starting at
cw's idea of the cursor position, which was usually the Rogue's @-sign.
This corrupted the map.
The problem has been fixed by passing msgw (the message line at the top
of the screen) to get_str(), so the player's typing appears where msgw
thinks the cursor should be, which is in the sensible place right after
the prompt. Some other get_str() invocations which used hw or stdscr
have been left unmodified.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Sat, 08 Sep 2012 22:05:05 -0700 |
parents | 7a7fb9b810e1 |
children | dfeed24bb616 |
line wrap: on
line diff
--- a/arogue5/command.c Wed Sep 05 10:14:34 2012 -0700 +++ b/arogue5/command.c Sat Sep 08 22:05:05 2012 -0700 @@ -312,7 +312,7 @@ int tlev; prbuf[0] = '\0'; msg("Which level? "); - if(get_str(prbuf,cw) == NORM) { + if(get_str(prbuf, msgw) == NORM) { tlev = atoi(prbuf); if(tlev < 1) { mpos = 0; @@ -929,7 +929,7 @@ free(guess[obj->o_which]); strcpy(prbuf, elsewise); } - if (get_str(prbuf, cw) == NORM) { + if (get_str(prbuf, msgw) == NORM) { if (mark) { strncpy(obj->o_mark, prbuf, MARKLEN-1); obj->o_mark[MARKLEN-1] = '\0';