X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=3eb2a73704b4f646226ba73e396c10007292b563;hb=38568f7dfac13f7a53f1d8751db2a63b64c935e8;hp=14ad28fe39d1b696cf748fcc5ede4284428fe1ae;hpb=fab52dc04709ef9eb5110d860f02f5ccf7719c2c;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 14ad28fe..3eb2a737 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -62,6 +62,10 @@ static void FinalizeScreen(int draw_target) // copy global animations to render target buffer, if defined (above border) if (gfx.draw_global_anim_function != NULL) gfx.draw_global_anim_function(draw_target, DRAW_GLOBAL_ANIM_STAGE_2); + + // copy tile selection cursor to render target buffer, if defined (above all) + if (gfx.draw_tile_cursor_function != NULL) + gfx.draw_tile_cursor_function(draw_target); } static void UpdateScreenExt(SDL_Rect *rect, boolean with_frame_delay) @@ -2536,7 +2540,7 @@ void SDLCloseAudio(void) /* event functions */ /* ========================================================================= */ -void SDLNextEvent(Event *event) +void SDLWaitEvent(Event *event) { SDL_WaitEvent(event); } @@ -2980,15 +2984,43 @@ boolean SDLReadJoystick(int nr, int *x, int *y, boolean *b1, boolean *b2) /* ========================================================================= */ #if defined(USE_TOUCH_INPUT_OVERLAY) +static void DrawTouchInputOverlay_ShowGrid(int alpha) +{ + SDL_Rect rect; + int grid_xsize = 18; + int grid_ysize = 11; + int x, y; + + SDL_SetRenderDrawColor(sdl_renderer, 255, 255, 255, alpha); + SDL_SetRenderDrawBlendMode(sdl_renderer, SDL_BLENDMODE_BLEND); + + for (x = 0; x < grid_xsize; x++) + { + rect.x = (x + 0) * video.screen_width / grid_xsize; + rect.w = (x + 1) * video.screen_width / grid_xsize - rect.x; + + for (y = 0; y < grid_ysize; y++) + { + rect.y = (y + 0) * video.screen_height / grid_ysize; + rect.h = (y + 1) * video.screen_height / grid_ysize - rect.y; + + SDL_RenderDrawRect(sdl_renderer, &rect); + } + } + + SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, 255); +} + static void DrawTouchInputOverlay() { static SDL_Texture *texture = NULL; static boolean initialized = FALSE; static boolean deactivated = TRUE; + static boolean show_grid = FALSE; static int width = 0, height = 0; static int alpha_max = SDL_ALPHA_OPAQUE / 2; static int alpha_step = 5; - static int alpha_last = 0; + static int alpha_last = -1; static int alpha = 0; boolean active = (overlay.enabled && overlay.active); @@ -3010,6 +3042,18 @@ static void DrawTouchInputOverlay() deactivated = TRUE; } + if (overlay.show_grid) + show_grid = TRUE; + else if (deactivated) + show_grid = FALSE; + + if (show_grid) + { + DrawTouchInputOverlay_ShowGrid(alpha); + + return; + } + if (!initialized) { char *basename = "overlay/VirtualButtons.png"; @@ -3038,7 +3082,6 @@ static void DrawTouchInputOverlay() SDL_FreeSurface(surface); SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND); - SDL_SetTextureAlphaMod(texture, alpha_max); initialized = TRUE; }