added flag to continue from hall of fame when pressing "return" key
authorHolger Schemel <info@artsoft.org>
Wed, 11 May 2022 11:46:48 +0000 (13:46 +0200)
committerHolger Schemel <info@artsoft.org>
Wed, 11 May 2022 11:46:48 +0000 (13:46 +0200)
src/files.c
src/main.h
src/screens.c

index 919b7f85533df569af308d0aefebc2646bfd471c..f0ed1e41cc2ee1b13c6bf5375a1d0f1d7d84ee6e 100644 (file)
@@ -8694,6 +8694,7 @@ static void setScoreInfoToDefaultsExt(struct ScoreInfo *scores)
   // - last_level_nr
   // - last_entry_nr
   // - continue_playing
+  // - continue_on_return
 }
 
 static void setScoreInfoToDefaults(void)
index cff7ff79a1148fb1fb2a76965014d32bd4350086..4d566eae281fdce27664a3e70bfbcf6cd1860e07 100644 (file)
@@ -3129,6 +3129,7 @@ struct ScoreInfo
   boolean tape_downloaded;
   boolean force_last_added;
   boolean continue_playing;
+  boolean continue_on_return;
 
   struct ScoreEntry entry[MAX_SCORE_ENTRIES];
 };
index e2308b4d4e455a345f36f9442b7f92f88cb1bf8d..ed086dc30bd694862bf2cbdb891941aa6e80113a 100644 (file)
@@ -4806,10 +4806,10 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
   }
 #endif
 
-  // any mouse click or direction input stops playing the next level
-  if ((mx || my || dx || dy) && scores.continue_playing)
+  // any mouse click or cursor key stops leaving scores by "Return" key
+  if ((mx || my || dx || dy) && scores.continue_on_return)
   {
-    scores.continue_playing = FALSE;
+    scores.continue_on_return = FALSE;
     level_nr = scores.last_level_nr;
     LoadLevel(level_nr);
   }
@@ -5092,16 +5092,13 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
          }
          else if (game_status == GAME_MODE_SCORES)
          {
-           if (setup.auto_play_next_level && setup.increment_levels &&
-               scores.last_level_nr < leveldir_current->last_level &&
-               scores.continue_playing &&
-               !network_playing)
+           if (scores.continue_playing && scores.continue_on_return)
            {
              StartGameActions(network.enabled, setup.autorecord,
                               level.random_seed);
              return;
            }
-           else if (!scores.continue_playing)
+           else if (!scores.continue_on_return)
            {
              SetGameStatus(GAME_MODE_SCOREINFO);
 
@@ -5304,6 +5301,7 @@ static void DrawHallOfFame_setScoreEntries(void)
 void DrawHallOfFame(int nr)
 {
   scores.last_level_nr = nr;
+  scores.continue_on_return = (game_status_last_screen == GAME_MODE_PLAYING);
 
   // (this is needed when called from GameEnd() after winning a game)
   KeyboardAutoRepeatOn();