fixed bug with asking to play again after game over when playing tape
authorHolger Schemel <info@artsoft.org>
Thu, 15 Nov 2018 00:41:09 +0000 (01:41 +0100)
committerHolger Schemel <info@artsoft.org>
Thu, 15 Nov 2018 00:41:09 +0000 (01:41 +0100)
src/game.c
src/game.h

index 71740a8f4931186bbcd5a08847518cef733528d5..9197a84aabf755f9e049e39f81ec22827612d20d 100644 (file)
@@ -3566,6 +3566,8 @@ void InitGame(void)
   game.LevelSolved = FALSE;
   game.GameOver = FALSE;
 
+  game.GamePlayed = !tape.playing;
+
   game.LevelSolved_GameWon = FALSE;
   game.LevelSolved_GameEnd = FALSE;
   game.LevelSolved_SaveTape = FALSE;
@@ -11483,6 +11485,10 @@ static void GameActionsExt(void)
   if (tape.recording)
     TapeRecordAction(tape_action);
 
+  // remember if game was played (especially after tape stopped playing)
+  if (!tape.playing && summarized_player_action)
+    game.GamePlayed = TRUE;
+
 #if USE_NEW_PLAYER_ASSIGNMENTS
   // !!! also map player actions in single player mode !!!
   // if (game.team_mode)
@@ -15032,6 +15038,10 @@ void CheckGameOver(void)
   if (game.request_active)
     return;
 
+  // do not ask to play again if game was never actually played
+  if (!game.GamePlayed)
+    return;
+
   if (!game_over)
   {
     last_game_over = FALSE;
index 195f4202a1dce1a8cb858b142f8f3b2dd15c94eb..00131fb98a2babd7147389b47312daa93091c0c9 100644 (file)
@@ -243,6 +243,7 @@ struct GameInfo
 
   // values for handling states for solved level and game over
   boolean LevelSolved;
+  boolean GamePlayed;
   boolean GameOver;
 
   boolean LevelSolved_GameWon;