Mercurial > hg > early-roguelike
comparison arogue5/rings.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 | c49f7927b0fa |
children | f2951c4e28d9 |
comparison
equal
deleted
inserted
replaced
75:19903deed392 | 76:ad2cb9a07aaa |
---|---|
97 else if (!r_know[obj->o_which] && | 97 else if (!r_know[obj->o_which] && |
98 askme && | 98 askme && |
99 (obj->o_flags & ISKNOW) == 0 && | 99 (obj->o_flags & ISKNOW) == 0 && |
100 r_guess[obj->o_which] == NULL) { | 100 r_guess[obj->o_which] == NULL) { |
101 msg(terse ? "Call it: " : "What do you want to call it? "); | 101 msg(terse ? "Call it: " : "What do you want to call it? "); |
102 if (get_str(buf, cw) == NORM) | 102 if (get_str(buf, msgw) == NORM) |
103 { | 103 { |
104 r_guess[obj->o_which] = new((unsigned int) strlen(buf) + 1); | 104 r_guess[obj->o_which] = new((unsigned int) strlen(buf) + 1); |
105 strcpy(r_guess[obj->o_which], buf); | 105 strcpy(r_guess[obj->o_which], buf); |
106 } | 106 } |
107 msg(""); | 107 msg(""); |