Bring Pearl's game-completion handling in line with my usual practice:
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 19 Jan 2013 18:56:06 +0000 (18:56 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 19 Jan 2013 18:56:06 +0000 (18:56 +0000)
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).

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@9750 cda61777-01e9-0310-a592-d414129be87e

pearl.c

diff --git a/pearl.c b/pearl.c
index 9670592..ed1ee16 100644 (file)
--- a/pearl.c
+++ b/pearl.c
@@ -1640,8 +1640,6 @@ static void check_completion(game_state *state, int mark)
     if (!had_error && loopclass != -1) {
         state->completed = TRUE;
         state->loop_length = dsfsize[loopclass];
-    } else {
-        state->completed = FALSE;
     }
 
     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,
                               int dir, game_ui *ui)
 {
-    if (!oldstate->completed &&
-        newstate->completed && !newstate->used_solve)
+    if (!oldstate->completed && newstate->completed &&
+        !oldstate->used_solve && !newstate->used_solve)
         return FLASH_TIME;
     else
         return 0.0F;