Bring Pearl's game-completion handling in line with my usual practice:

the 'completed' flag is not reset if you make a new move transforming
a solved game into an unsolved state, so the game won't flash again if
you manually erase and redraw a line segment (though it still will if
you undo and redo past the first solved state in the undo history).

[originally from svn r9750]
This commit is contained in:
Simon Tatham
2013-01-19 18:56:06 +00:00
parent 6b6442b16c
commit 8a7dad6d2d

View File

@ -1640,8 +1640,6 @@ static void check_completion(game_state *state, int mark)
if (!had_error && loopclass != -1) { if (!had_error && loopclass != -1) {
state->completed = TRUE; state->completed = TRUE;
state->loop_length = dsfsize[loopclass]; state->loop_length = dsfsize[loopclass];
} else {
state->completed = FALSE;
} }
sfree(dsf); sfree(dsf);
@ -2450,8 +2448,8 @@ static float game_anim_length(game_state *oldstate, game_state *newstate,
static float game_flash_length(game_state *oldstate, game_state *newstate, static float game_flash_length(game_state *oldstate, game_state *newstate,
int dir, game_ui *ui) int dir, game_ui *ui)
{ {
if (!oldstate->completed && if (!oldstate->completed && newstate->completed &&
newstate->completed && !newstate->used_solve) !oldstate->used_solve && !newstate->used_solve)
return FLASH_TIME; return FLASH_TIME;
else else
return 0.0F; return 0.0F;