Mercurial > hg > early-roguelike
comparison xrogue/command.c @ 152:0c775afe0072
arogue7, xrogue: fix command repetition.
In both games, command() loops and calls the action function twice for
each command: once to schedule it by setting player.t_action and
player.t_no_move, and again, to actually do it, once player.t_no_move
has been reduced to 0. Each loop decremented count, so repeated
commands were only repeated half the number of times the player typed.
count is now decremented only when ch has been set to the repeated
command.
author | John "Elwin" Edwards |
---|---|
date | Thu, 28 May 2015 11:08:03 -0400 |
parents | 9aa9b9a2e159 |
children | 23fff8f7b303 |
comparison
equal
deleted
inserted
replaced
151:cadff8f047a1 | 152:0c775afe0072 |
---|---|
183 newcount = FALSE; | 183 newcount = FALSE; |
184 | 184 |
185 /* | 185 /* |
186 * execute a command | 186 * execute a command |
187 */ | 187 */ |
188 if (count && !running) | 188 if (count && !running && player.t_action == A_NIL) |
189 count--; | 189 count--; |
190 | 190 |
191 switch (ch) { | 191 switch (ch) { |
192 case '!' : shell(); | 192 case '!' : shell(); |
193 case KEY_LEFT : do_move(0, -1); | 193 case KEY_LEFT : do_move(0, -1); |