X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=2120931852677da9e9a8e70cd4692aa341a77b18;hb=bfae6eed033adc10e9f816182dd7812ae9cb3a0a;hp=3d1163638a24738f20af985e658300d3e8eedd10;hpb=fd045bdb92ad7e3523ba850c13a7ef6533d0e726;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 3d116363..21209318 100644 --- a/src/events.c +++ b/src/events.c @@ -636,10 +636,35 @@ void HandleWindowEvent(WindowEvent *event) if (new_display_width != video.display_width || new_display_height != video.display_height) { + int nr = GRID_ACTIVE_NR(); // previous screen orientation + video.display_width = new_display_width; video.display_height = new_display_height; SDLSetScreenProperties(); + + // check if screen orientation has changed (should always be true here) + if (nr != GRID_ACTIVE_NR()) + { + 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++) + setup.touch.grid_button[nr][x][y] = overlay.grid_button[x][y]; + } + + nr = GRID_ACTIVE_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] = setup.touch.grid_button[nr][x][y]; + } } } #endif @@ -658,6 +683,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); @@ -680,6 +717,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" :