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);
return align_yoffset;
}
+static void StartPlayingFromHallOfFame(void)
+{
+ level_nr = scores.next_level_nr;
+ LoadLevel(level_nr);
+
+ StartGameActions(network.enabled, setup.autorecord, level.random_seed);
+}
+
static void DrawChooseTree(TreeInfo **ti_ptr)
{
int fade_mask = REDRAW_FIELD;
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;
#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);
}
}
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);
+ StartPlayingFromHallOfFame();
+
return;
}
- else if (!scores.was_just_playing)
+ else if (!scores.continue_on_return)
{
SetGameStatus(GAME_MODE_SCOREINFO);
// ("score_entries" and "score_entry_current" may be NULL here)
}
-void DrawHallOfFame(int level_nr)
+void DrawHallOfFame(int nr)
{
- scores.last_level_nr = level_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();
SetDrawDeactivationMask(REDRAW_NONE);
SetDrawBackgroundMask(REDRAW_FIELD);
- LoadLocalAndServerScore(level_nr, TRUE);
+ LoadLocalAndServerScore(scores.last_level_nr, TRUE);
DrawHallOfFame_setScoreEntries();