mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
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]
This commit is contained in:
6
flip.c
6
flip.c
@ -1193,7 +1193,6 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
|
|||||||
int fx, fy, fd;
|
int fx, fy, fd;
|
||||||
int v = state->grid[i];
|
int v = state->grid[i];
|
||||||
int vv;
|
int vv;
|
||||||
int hintmask = (state->hints_active ? ~0 : ~2);
|
|
||||||
|
|
||||||
if (flashframe >= 0) {
|
if (flashframe >= 0) {
|
||||||
fx = (w+1)/2 - min(x+1, w-x);
|
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 &= ~1;
|
||||||
}
|
}
|
||||||
|
|
||||||
v &= hintmask;
|
if (!state->hints_active)
|
||||||
|
v &= ~2;
|
||||||
if (ui->cdraw && ui->cx == x && ui->cy == y)
|
if (ui->cdraw && ui->cx == x && ui->cy == y)
|
||||||
v |= 4;
|
v |= 4;
|
||||||
|
|
||||||
if (oldstate && ((state->grid[i] ^ oldstate->grid[i]) & hintmask))
|
if (oldstate && ((state->grid[i] ^ oldstate->grid[i]) &~ 2))
|
||||||
vv = 255; /* means `animated' */
|
vv = 255; /* means `animated' */
|
||||||
else
|
else
|
||||||
vv = v;
|
vv = v;
|
||||||
|
Reference in New Issue
Block a user