From 38568f7dfac13f7a53f1d8751db2a63b64c935e8 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 27 Apr 2018 01:56:05 +0200 Subject: [PATCH] added grid to (not yet functional) setup screen to configure virtual buttons --- src/libgame/sdl.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/libgame/system.c | 12 ++++++++++++ src/libgame/system.h | 3 +++ src/screens.c | 4 ++++ 4 files changed, 59 insertions(+) diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 07064a4b..3eb2a737 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -2984,11 +2984,39 @@ 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; @@ -3014,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"; diff --git a/src/libgame/system.c b/src/libgame/system.c index f9f42fc8..29c3b24c 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -328,6 +328,8 @@ void InitOverlayInfo() overlay.enabled = FALSE; overlay.active = FALSE; + overlay.show_grid = FALSE; + #if defined(PLATFORM_ANDROID) if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS)) overlay.enabled = TRUE; @@ -385,6 +387,16 @@ void SetOverlayActive(boolean active) overlay.active = active; } +void SetOverlayShowGrid(boolean show_grid) +{ + overlay.show_grid = show_grid; + + SetOverlayActive(show_grid); + + if (show_grid) + SetOverlayEnabled(TRUE); +} + boolean GetOverlayActive() { return overlay.active; diff --git a/src/libgame/system.h b/src/libgame/system.h index c645089b..6bf12a66 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -976,6 +976,8 @@ struct OverlayInfo { boolean enabled; /* overlay generally enabled or disabled */ boolean active; /* overlay activated (depending on game mode) */ + + boolean show_grid; }; struct JoystickInfo @@ -1544,6 +1546,7 @@ void SetTileCursorXY(int, int); void SetTileCursorSXSY(int, int); void SetOverlayEnabled(boolean); void SetOverlayActive(boolean); +void SetOverlayShowGrid(boolean); boolean GetOverlayActive(); void SetDrawDeactivationMask(int); int GetDrawDeactivationMask(void); diff --git a/src/screens.c b/src/screens.c index 6d23dc80..dbac875b 100644 --- a/src/screens.c +++ b/src/screens.c @@ -7205,6 +7205,8 @@ boolean ConfigureVirtualButtonsMain() FadeIn(REDRAW_FIELD); + SetOverlayShowGrid(TRUE); + while (!finished) { Event event; @@ -7285,6 +7287,8 @@ boolean ConfigureVirtualButtonsMain() BackToFront(); } + SetOverlayShowGrid(FALSE); + return success; } -- 2.34.1