added grid to (not yet functional) setup screen to configure virtual buttons
authorHolger Schemel <info@artsoft.org>
Thu, 26 Apr 2018 23:56:05 +0000 (01:56 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 5 Jun 2018 18:58:41 +0000 (20:58 +0200)
src/libgame/sdl.c
src/libgame/system.c
src/libgame/system.h
src/screens.c

index 07064a4bf65dbdaac7b3ecec8f8d7770a57fe97d..3eb2a73704b4f646226ba73e396c10007292b563 100644 (file)
@@ -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";
index f9f42fc8d84e8e12463628191103b89b5fd1854c..29c3b24cb6f82df737a596d97b3f27d5b5024f62 100644 (file)
@@ -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;
index c645089b6a3e91d49cce74042daa62280a2ee43d..6bf12a6670d2a58f781810a7a1099e7ecac7713d 100644 (file)
@@ -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);
index 6d23dc804edd6e71a7133f436d212bc7bb277e75..dbac875b04ad6f9c90db1ed19b13029d412079e3 100644 (file)
@@ -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;
 }