chiark / gitweb /
Bring Pearl's game-completion handling in line with my usual practice:
authorSimon Tatham <anakin@pobox.com>
Sat, 19 Jan 2013 18:56:06 +0000 (18:56 +0000)
committerSimon Tatham <anakin@pobox.com>
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).

[originally from svn r9750]

pearl.c

diff --git a/pearl.c b/pearl.c
index 967059290185e218cc925ca5acf4784ac38949de..ed1ee16ce483871b6f02e0b854f9843f32952954 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;