added flag to continue from hall of fame when pressing "return" key
[rocksndiamonds.git] / src / screens.c
index cba644acee1ddf34ae62c3ee0a7db278148e4b22..ed086dc30bd694862bf2cbdb891941aa6e80113a 100644 (file)
@@ -1721,6 +1721,9 @@ void DrawMainMenu(void)
     return;
   }
 
+  // reset flag to continue playing next level from hall of fame
+  scores.continue_playing = FALSE;
+
   // leveldir_current may be invalid (level group, parent link, node copy)
   leveldir_current = getValidLevelSeries(leveldir_current, leveldir_last_valid);
 
@@ -4342,9 +4345,6 @@ static void DrawChooseTree(TreeInfo **ti_ptr)
   boolean restart_music = (game_status != game_status_last_screen &&
                           game_status_last_screen != GAME_MODE_SCOREINFO);
 
-  scores.was_just_playing = (game_status == GAME_MODE_SCORES &&
-                            game_status_last_screen == GAME_MODE_PLAYING);
-
   if (CheckFadeAll())
     fade_mask = REDRAW_ALL;
 
@@ -4799,17 +4799,17 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
 
 #if defined(PLATFORM_ANDROID)
   // touching the screen anywhere continues playing the next level
-  if ((mx || my) && scores.was_just_playing)
+  if ((mx || my) && scores.continue_playing)
   {
     mx = my = 0;
     button = MB_MENU_CHOICE;
   }
 #endif
 
-  // any mouse click or direction input stops playing the next level
-  if ((mx || my || dx || dy) && scores.was_just_playing)
+  // any mouse click or cursor key stops leaving scores by "Return" key
+  if ((mx || my || dx || dy) && scores.continue_on_return)
   {
-    scores.was_just_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.was_just_playing &&
-               !network_playing)
+           if (scores.continue_playing && scores.continue_on_return)
            {
              StartGameActions(network.enabled, setup.autorecord,
                               level.random_seed);
              return;
            }
-           else if (!scores.was_just_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();