aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2005-10-10 17:22:33 +0000
committerSimon Tatham <anakin@pobox.com>2005-10-10 17:22:33 +0000
commit7e57366a576831d80d28d0426ff07ad7d8ee0359 (patch)
tree1417881dc1aa75c502c109100086f0013abef9c5
parentdd175e490a197026210ba4432eec6236971c6173 (diff)
downloadpuzzles-7e57366a576831d80d28d0426ff07ad7d8ee0359.zip
puzzles-7e57366a576831d80d28d0426ff07ad7d8ee0359.tar.gz
puzzles-7e57366a576831d80d28d0426ff07ad7d8ee0359.tar.bz2
puzzles-7e57366a576831d80d28d0426ff07ad7d8ee0359.tar.xz
r6384 didn't go quite far enough. In fact, a grid square which
differs between oldstate and state in only the hint bit should not have a flip animation even if hints_active is TRUE. Flip animations should only happen for tiles which are changing their primary state. (Put like that, it seems so obvious.) Test case which demonstrates this fix to be right and r6384 to be wrong: 3x3:101000000000000000000,300 . Hit Solve immediately and then click on the red-highlighted squares. [originally from svn r6385] [r6384 == dd175e490a197026210ba4432eec6236971c6173]
-rw-r--r--flip.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/flip.c b/flip.c
index 44fcf15..bcd2ed0 100644
--- a/flip.c
+++ b/flip.c
@@ -1193,7 +1193,6 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
int fx, fy, fd;
int v = state->grid[i];
int vv;
- int hintmask = (state->hints_active ? ~0 : ~2);
if (flashframe >= 0) {
fx = (w+1)/2 - min(x+1, w-x);
@@ -1205,11 +1204,12 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
v &= ~1;
}
- v &= hintmask;
+ if (!state->hints_active)
+ v &= ~2;
if (ui->cdraw && ui->cx == x && ui->cy == y)
v |= 4;
- if (oldstate && ((state->grid[i] ^ oldstate->grid[i]) & hintmask))
+ if (oldstate && ((state->grid[i] ^ oldstate->grid[i]) &~ 2))
vv = 255; /* means `animated' */
else
vv = v;