added updating virtual buttons setup screen depending on screen orientation
[rocksndiamonds.git] / src / events.c
index 5a4023ec36b3e621d0d22fa5e8dc1b3765dfc293..9aad2bca87dfa837891244e5099d004c97a7d629 100644 (file)
@@ -649,21 +649,16 @@ void HandleWindowEvent(WindowEvent *event)
          int x, y;
 
          if (game_status == GAME_MODE_SETUP)
-         {
-           // save active virtual buttons (in case of just configuring them)
-           for (x = 0; x < MAX_GRID_XSIZE; x++)
-             for (y = 0; y < MAX_GRID_YSIZE; y++)
-               overlay.grid_button_all[nr][x][y] = overlay.grid_button[x][y];
-         }
+           RedrawSetupScreenAfterScreenRotation(nr);
 
          nr = GRID_ACTIVE_NR();
 
-         overlay.grid_xsize = overlay.grid_xsize_all[nr];
-         overlay.grid_ysize = overlay.grid_ysize_all[nr];
+         overlay.grid_xsize = setup.touch.grid_xsize[nr];
+         overlay.grid_ysize = setup.touch.grid_ysize[nr];
 
          for (x = 0; x < MAX_GRID_XSIZE; x++)
            for (y = 0; y < MAX_GRID_YSIZE; y++)
-             overlay.grid_button[x][y] = overlay.grid_button_all[nr][x][y];
+             overlay.grid_button[x][y] = setup.touch.grid_button[nr][x][y];
        }
       }
     }
@@ -683,6 +678,18 @@ static struct
 
 void HandleFingerEvent_VirtualButtons(FingerEvent *event)
 {
+#if 1
+  int x = event->x * overlay.grid_xsize;
+  int y = event->y * overlay.grid_ysize;
+  int grid_button = overlay.grid_button[x][y];
+  Key key = (grid_button == CHAR_GRID_BUTTON_LEFT  ? setup.input[0].key.left :
+            grid_button == CHAR_GRID_BUTTON_RIGHT ? setup.input[0].key.right :
+            grid_button == CHAR_GRID_BUTTON_UP    ? setup.input[0].key.up :
+            grid_button == CHAR_GRID_BUTTON_DOWN  ? setup.input[0].key.down :
+            grid_button == CHAR_GRID_BUTTON_SNAP  ? setup.input[0].key.snap :
+            grid_button == CHAR_GRID_BUTTON_DROP  ? setup.input[0].key.drop :
+            KSYM_UNDEFINED);
+#else
   float ypos = 1.0 - 1.0 / 3.0 * video.display_width / video.display_height;
   float event_x = (event->x);
   float event_y = (event->y - ypos) / (1 - ypos);
@@ -705,6 +712,7 @@ void HandleFingerEvent_VirtualButtons(FingerEvent *event)
             event_y > 2.0 / 3.0 && event_y < 1 ?
             setup.input[0].key.down :
             KSYM_UNDEFINED);
+#endif
   int key_status = (event->type == EVENT_FINGERRELEASE ? KEY_RELEASED :
                    KEY_PRESSED);
   char *key_status_name = (key_status == KEY_RELEASED ? "KEY_RELEASED" :