moved requesting game restart to function that checks for game over
[rocksndiamonds.git] / src / game.c
index d91d8ac3ec629de5625ce29485531dba7c64bfa9..c5d941dd093b0882faf8d9b2dbd16c1e7ea23f86 100644 (file)
@@ -15678,27 +15678,19 @@ static char *getRestartGameMessage(void)
   return message;
 }
 
-void CheckGameOver(void)
+boolean CheckRestartGame(void)
 {
   static boolean last_game_over = FALSE;
   static int game_over_delay = 0;
   int game_over_delay_value = 50;
   boolean game_over = checkGameFailed();
 
-  // do not handle game over if request dialog is already active
-  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;
     game_over_delay = game_over_delay_value;
 
-    return;
+    return FALSE;
   }
 
   if (game_over_delay > 0)
@@ -15708,13 +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 FALSE;
+
+  // do not ask to play again if game was never actually played
+  if (!game.GamePlayed)
+    return FALSE;
+
+  // do not ask to play again if this was disabled in setup menu
+  if (!setup.ask_on_game_over)
+    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)