X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=f578c05d233f24ac8454379b86bb18b66e79103f;hb=220eba293baab8856f29ca243c9d2d313806cab1;hp=2f2352cde7798033142a951dc9c2568d96352d8b;hpb=1eed7f41853731cebe89fc85954f444966a0296b;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 2f2352cd..f578c05d 100644 --- a/src/screens.c +++ b/src/screens.c @@ -4781,10 +4781,25 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, return; } - if (mx || my) // mouse input +#if defined(PLATFORM_ANDROID) + // touching the screen anywhere continues playing the next level + if ((mx || my) && scores.was_just_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) { scores.was_just_playing = FALSE; + level_nr = scores.last_level_nr; + LoadLevel(level_nr); + } + if (mx || my) // mouse input + { x = (mx - amSX) / 32; y = (my - amSY) / 32 - MENU_SCREEN_START_YPOS; @@ -4793,8 +4808,6 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, } else if (dx || dy) // keyboard or scrollbar/scrollbutton input { - scores.was_just_playing = FALSE; - // move cursor instead of scrolling when already at start/end of list if (dy == -1 * SCROLL_LINE && ti->cl_first == 0) dy = -1; @@ -5416,10 +5429,11 @@ static void DrawScoreInfo_Content(int entry_nr) int ystep_title = getMenuTextStep(spacing_title, font_title); int ystep_para = getMenuTextStep(spacing_para, font_text); int ystep_line = getMenuTextStep(spacing_line, font_text); + int xstart = mSX - SX + menu.left_spacing[GAME_MODE_SCOREINFO]; int ystart = mSY - SY + menu.top_spacing[GAME_MODE_SCOREINFO]; int ybottom = mSY - SY + SYSIZE - menu.bottom_spacing[GAME_MODE_SCOREINFO]; - int xstart1 = mSX - SX + 2 * xstep; - int xstart2 = mSX - SX + 13 * xstep; + int xstart1 = xstart + xstep; + int xstart2 = xstart + xstep * 12; int select_x = SX + xstart1; int select_y1, select_y2; int play_x, play_y; @@ -5429,14 +5443,14 @@ static void DrawScoreInfo_Content(int entry_nr) int font_height = getFontHeight(font_text); int tape_date_width = getTextWidth(tape_date, font_text); int pad_left = xstart2; - int pad_right = MENU_SCREEN_INFO_SPACE_RIGHT; + int pad_right = menu.right_spacing[GAME_MODE_SCOREINFO]; int max_chars_per_line = (SXSIZE - pad_left - pad_right) / font_width; int max_lines_per_text = 5; int lines; ClearField(); - // redraw score selection buttons (which have just been erased) + // redraw level selection buttons (which have just been erased) RedrawScreenMenuGadgets(SCREEN_MASK_SCORES); if (score_entries == NULL) @@ -5533,6 +5547,9 @@ static void DrawScoreInfo(int entry_nr) UnmapAllGadgets(); + FreeScreenGadgets(); + CreateScreenGadgets(); + FadeOut(REDRAW_FIELD); // needed if different viewport properties defined after playing score tape @@ -9736,12 +9753,14 @@ static void CreateScreenMenubuttons(void) if (strPrefix(leveldir_current->identifier, "snake_bite")) title_width = strlen(INFOTEXT_SCORE_ENTRY) * 32; + // use "SX" here to center buttons (ignore horizontal draw offset) if (pos->x == -1) x = (id == SCREEN_CTRL_ID_PREV_LEVEL2 ? SX + (SXSIZE - title_width) / 2 - width * 3 / 2 : id == SCREEN_CTRL_ID_NEXT_LEVEL2 ? SX + (SXSIZE + title_width) / 2 + width / 2 : 0); + // use "mSY" here to place buttons (respect vertical draw offset) if (pos->y == -1) y = (id == SCREEN_CTRL_ID_PREV_LEVEL2 || id == SCREEN_CTRL_ID_NEXT_LEVEL2 ? mSY + MENU_TITLE1_YPOS : 0); @@ -10250,6 +10269,12 @@ static void HandleScreenGadgets(struct GadgetInfo *gi) } } +void HandleScreenGadgetKeys(Key key) +{ + if (key == setup.shortcut.tape_play) + HandleScreenGadgets(screen_gadget[SCREEN_CTRL_ID_PLAY_TAPE]); +} + void DumpScreenIdentifiers(void) { int i;