X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=ee5035ce0320569f35a9fb27e510a0123da9636d;hb=6ca233d4d71331460af0443bf5b307f16c6fe069;hp=53ac39a7e8911e8d3af97091f7819af2073ff1b4;hpb=c20136c10315df9e66a56f97db11023306032604;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 53ac39a7..ee5035ce 100644 --- a/src/screens.c +++ b/src/screens.c @@ -4353,6 +4353,9 @@ static void DrawChooseTree(TreeInfo **ti_ptr) boolean restart_music = (game_status != game_status_last_screen && game_status_last_screen != GAME_MODE_SCOREINFO); + scores.continue_on_return = (game_status == GAME_MODE_SCORES && + game_status_last_screen == GAME_MODE_PLAYING); + if (CheckFadeAll()) fade_mask = REDRAW_ALL; @@ -4362,7 +4365,11 @@ static void DrawChooseTree(TreeInfo **ti_ptr) { execSetupArtwork(); } - else // GAME_MODE_LEVELS + else if (game_status == GAME_MODE_SCORES && scores.continue_playing) + { + StartPlayingFromHallOfFame(); + } + else { SetGameStatus(GAME_MODE_MAIN); @@ -4806,11 +4813,11 @@ 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.continue_playing) + // directly continue when touching the screen after playing + if ((mx || my) && scores.continue_on_return) { + // ignore touch events until released mx = my = 0; - button = MB_MENU_CHOICE; } #endif @@ -4908,14 +4915,14 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, return; } } - else if (dx == -1 && ti->node_parent) + else if ((dx == -1 || button == MB_MENU_CONTINUE) && ti->node_parent) { - FadeSetLeaveMenu(); + if (game_status != GAME_MODE_SCORES) + FadeSetLeaveMenu(); PlaySound(SND_MENU_ITEM_SELECTING); *ti_ptr = ti->node_parent; - DrawChooseTree(ti_ptr); return; @@ -5307,13 +5314,15 @@ static void DrawHallOfFame_setScoreEntries(void) if (score_entry_current == NULL) score_entry_current = getFirstValidTreeInfoEntry(score_entries); + if (score_entries != NULL && scores.continue_playing) + setString(&score_entries->node_group->name, BACKLINK_TEXT_NEXT); + // ("score_entries" and "score_entry_current" may be NULL here) } 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();