added setup option to skip displaying the high scores after solving a level
[rocksndiamonds.git] / src / game.c
index c6d3a862b4a10a46de412b3059e5a3cb4e848b5f..2cf0e9aa46a468e4eacf98bf528d34964359d322 100644 (file)
@@ -1096,7 +1096,7 @@ void ContinueMoving(int, int);
 void Bang(int, int);
 void InitMovDir(int, int);
 void InitAmoebaNr(int, int);
-int NewHiScore(void);
+int NewHiScore(int);
 
 void TestIfGoodThingHitsBadThing(int, int, int);
 void TestIfBadThingHitsGoodThing(int, int, int);
@@ -4650,7 +4650,7 @@ void GameWon()
 void GameEnd()
 {
   int hi_pos;
-  boolean raise_level = FALSE;
+  int last_level_nr = level_nr;
 
   local_player->LevelSolved_GameEnd = TRUE;
 
@@ -4693,35 +4693,39 @@ void GameEnd()
 
   if (setup.increment_levels &&
       level_nr < leveldir_current->last_level)
-    raise_level = TRUE;                        /* advance to next level */
-
-  if ((hi_pos = NewHiScore()) >= 0) 
   {
-    SetGameStatus(GAME_MODE_SCORES);
-
-    DrawHallOfFame(hi_pos);
+    level_nr++;                /* advance to next level */
+    TapeErase();       /* start with empty tape */
 
-    if (raise_level)
+    if (setup.auto_play_next_level)
     {
-      level_nr++;
-      TapeErase();
+      LoadLevel(level_nr);
+
+      SaveLevelSetup_SeriesInfo();
     }
   }
-  else
+
+  hi_pos = NewHiScore(last_level_nr);
+
+  if (hi_pos >= 0 && !setup.skip_scores_after_game)
   {
-    SetGameStatus(GAME_MODE_MAIN);
+    SetGameStatus(GAME_MODE_SCORES);
 
-    if (raise_level)
-    {
-      level_nr++;
-      TapeErase();
-    }
+    DrawHallOfFame(last_level_nr, hi_pos);
+  }
+  else if (!setup.auto_play_next_level || !setup.increment_levels)
+  {
+    SetGameStatus(GAME_MODE_MAIN);
 
     DrawMainMenu();
   }
+  else
+  {
+    StartGameActions(network.enabled, setup.autorecord, level.random_seed);
+  }
 }
 
-int NewHiScore()
+int NewHiScore(int level_nr)
 {
   int k, l;
   int position = -1;