moved requesting game restart to function that checks for game over
authorHolger Schemel <info@artsoft.org>
Wed, 22 Mar 2023 17:12:49 +0000 (18:12 +0100)
committerHolger Schemel <info@artsoft.org>
Wed, 22 Mar 2023 17:14:07 +0000 (18:14 +0100)
src/game.c
src/game.h
src/screens.c

index ae65ccd9bae2cf8bc6516ae4767282fb60cd2c14..c5d941dd093b0882faf8d9b2dbd16c1e7ea23f86 100644 (file)
@@ -15678,7 +15678,7 @@ static char *getRestartGameMessage(void)
   return message;
 }
 
-void CheckGameOver(void)
+boolean CheckRestartGame(void)
 {
   static boolean last_game_over = FALSE;
   static int game_over_delay = 0;
@@ -15690,7 +15690,7 @@ void CheckGameOver(void)
     last_game_over = FALSE;
     game_over_delay = game_over_delay_value;
 
-    return;
+    return FALSE;
   }
 
   if (game_over_delay > 0)
@@ -15700,25 +15700,34 @@ void CheckGameOver(void)
 
     game_over_delay--;
 
-    return;
+    return FALSE;
   }
 
   // do not handle game over if request dialog is already active
   if (game.request_active)
-    return;
+    return FALSE;
 
   // do not ask to play again if game was never actually played
   if (!game.GamePlayed)
-    return;
+    return FALSE;
 
   // do not ask to play again if this was disabled in setup menu
   if (!setup.ask_on_game_over)
-    return;
+    return FALSE;
 
   if (last_game_over != game_over)
     game.restart_game_message = getRestartGameMessage();
 
   last_game_over = game_over;
+
+  if (game.restart_game_message != NULL)
+  {
+    RequestRestartGame(game.restart_game_message);
+
+    return TRUE;
+  }
+
+  return FALSE;
 }
 
 boolean checkGameSolved(void)
index 26c186fe6df4cf457180ecdf1b7e9b6dc5f477a3..95531163027886438ca1f202c709e173963b7b16 100644 (file)
@@ -456,8 +456,8 @@ void RaiseScoreElement(int);
 void RequestQuitGameExt(boolean, boolean, char *);
 void RequestQuitGame(boolean);
 void RequestRestartGame(char *);
-void CheckGameOver(void);
 
+boolean CheckRestartGame(void);
 boolean checkGameSolved(void);
 boolean checkGameFailed(void);
 boolean checkGameEnded(void);
index eecb688b937aa681e9f1d78ab93e24de931a1ba0..c4955e8c7bdcac56ddaad9ceaed82a8e6e96a246 100644 (file)
@@ -9527,14 +9527,8 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
 
 void HandleGameActions(void)
 {
-  CheckGameOver();
-
-  if (game.restart_game_message != NULL)
-  {
-    RequestRestartGame(game.restart_game_message);
-
+  if (CheckRestartGame())
     return;
-  }
 
   if (game_status != GAME_MODE_PLAYING)
     return;