X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=e3632df02a71a2c3081f1fb634d0b128d6c7e1dc;hb=0ede483d20ce26c84087e9fe476debe277f4973a;hp=41b60832fa50f92d165da235a709403b24d034d4;hpb=9d23eac9de03f91cf0ac094786ab30cdd589ac49;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 41b60832..e3632df0 100644 --- a/src/events.c +++ b/src/events.c @@ -43,6 +43,7 @@ static boolean stop_processing_events = FALSE; // forward declarations for internal use +static void ClearTouchInfo(void); static void HandleNoEvent(void); static void HandleEventActions(void); @@ -407,6 +408,7 @@ void ClearEventQueue(void) button_status = MB_RELEASED; break; + case EVENT_FINGERRELEASE: case EVENT_KEYRELEASE: ClearPlayerAction(); break; @@ -442,6 +444,10 @@ void ClearPlayerAction(void) stored_player[i].snap_action = 0; } + // simulate finger release events for still pressed virtual buttons + overlay.grid_button_action = JOY_NO_ACTION; + + ClearTouchInfo(); ClearJoystickState(); ClearPlayerMouseAction(); } @@ -667,19 +673,10 @@ void HandleWindowEvent(WindowEvent *event) // 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) RedrawSetupScreenAfterScreenRotation(nr); - 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]; + SetOverlayGridSizeAndButtons(); } } } @@ -708,6 +705,14 @@ static void SetTouchInfo(int pos, SDL_FingerID finger_id, int counter, touch_info[pos].action = action; } +static void ClearTouchInfo(void) +{ + int i; + + for (i = 0; i < NUM_TOUCH_FINGERS; i++) + SetTouchInfo(i, 0, 0, 0, JOY_NO_ACTION); +} + static void HandleFingerEvent_VirtualButtons(FingerEvent *event) { int x = event->x * overlay.grid_xsize;