X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=13723bfa514da9ff8f78e499946907ad7d4729bd;hb=963345fd2614535471086111e64eded2cd9818e4;hp=69efaf508189e9631cb3b7f3b08f608f364922f5;hpb=bbbd254d0e097f479e20a06ddf97eb84782c2e82;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 69efaf50..13723bfa 100644 --- a/src/events.c +++ b/src/events.c @@ -108,7 +108,7 @@ static int FilterEvents(const Event *event) { SetMouseCursor(CURSOR_DEFAULT); - DelayReached(&special_cursor_delay, 0); + ResetDelayCounter(&special_cursor_delay); cursor_mode_last = CURSOR_DEFAULT; } @@ -214,6 +214,8 @@ static void HandleEvents(void) while (NextValidEvent(&event)) { + int game_status_last = game_status; + switch (event.type) { case EVENT_BUTTONPRESS: @@ -264,6 +266,10 @@ static void HandleEvents(void) break; } + // always handle events within delay period if game status has changed + if (game_status != game_status_last) + ResetDelayCounter(&event_frame_delay); + // do not handle events for longer than standard frame delay period if (DelayReached(&event_frame_delay, event_frame_delay_value)) break; @@ -330,7 +336,7 @@ static void HandleMouseCursor(void) // display normal pointer if mouse pressed if (button_status != MB_RELEASED) - DelayReached(&special_cursor_delay, 0); + ResetDelayCounter(&special_cursor_delay); if (gfx.cursor_mode != CURSOR_PLAYFIELD && cursor_inside_playfield && @@ -408,6 +414,7 @@ void ClearEventQueue(void) button_status = MB_RELEASED; break; + case EVENT_FINGERRELEASE: case EVENT_KEYRELEASE: ClearPlayerAction(); break; @@ -672,19 +679,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(); } } } @@ -1478,7 +1476,7 @@ void HandleKeyEvent(KeyEvent *event) if (key_status == KEY_PRESSED) SetOverlayEnabled(!GetOverlayEnabled()); } - else + else if (!textinput_status) { // for any other "real" key event, disable virtual buttons SetOverlayEnabled(FALSE); @@ -1757,7 +1755,12 @@ void HandleButton(int mx, int my, int button, int button_nr) break; case GAME_MODE_PSEUDO_TYPENAME: - HandleTypeName(0, KSYM_Return); + case GAME_MODE_PSEUDO_TYPENAMES: + HandleTypeName(KSYM_Return); + break; + + case GAME_MODE_NAMES: + HandleChoosePlayerName(mx, my, 0, 0, button); break; case GAME_MODE_LEVELS: @@ -1898,6 +1901,10 @@ static void HandleKeysSpecial(Key key) { global.show_frames_per_second = !global.show_frames_per_second; } + else if (strSuffix(cheat_input, ":xsn")) + { + tile_cursor.xsn_debug = TRUE; + } } else if (game_status == GAME_MODE_PLAYING) { @@ -2084,6 +2091,8 @@ void HandleKey(Key key, int key_status) { key_action |= key_info[i].action | JOY_BUTTON_SNAP; key_snap_action |= key_info[i].action; + + tape.property_bits |= TAPE_PROPERTY_TAS_KEYS; } } } @@ -2301,11 +2310,13 @@ void HandleKey(Key key, int key_status) switch (game_status) { case GAME_MODE_PSEUDO_TYPENAME: - HandleTypeName(0, key); + case GAME_MODE_PSEUDO_TYPENAMES: + HandleTypeName(key); break; case GAME_MODE_TITLE: case GAME_MODE_MAIN: + case GAME_MODE_NAMES: case GAME_MODE_LEVELS: case GAME_MODE_LEVELNR: case GAME_MODE_SETUP: @@ -2323,6 +2334,8 @@ void HandleKey(Key key, int key_status) HandleTitleScreen(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_MAIN) HandleMainMenu(0, 0, 0, 0, MB_MENU_CHOICE); + else if (game_status == GAME_MODE_NAMES) + HandleChoosePlayerName(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevelSet(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_LEVELNR) @@ -2341,6 +2354,8 @@ void HandleKey(Key key, int key_status) if (game_status == GAME_MODE_TITLE) HandleTitleScreen(0, 0, 0, 0, MB_MENU_LEAVE); + else if (game_status == GAME_MODE_NAMES) + HandleChoosePlayerName(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevelSet(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_LEVELNR) @@ -2354,7 +2369,9 @@ void HandleKey(Key key, int key_status) break; case KSYM_Page_Up: - if (game_status == GAME_MODE_LEVELS) + if (game_status == GAME_MODE_NAMES) + HandleChoosePlayerName(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); + else if (game_status == GAME_MODE_LEVELS) HandleChooseLevelSet(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELNR) HandleChooseLevelNr(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); @@ -2367,7 +2384,9 @@ void HandleKey(Key key, int key_status) break; case KSYM_Page_Down: - if (game_status == GAME_MODE_LEVELS) + if (game_status == GAME_MODE_NAMES) + HandleChoosePlayerName(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); + else if (game_status == GAME_MODE_LEVELS) HandleChooseLevelSet(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELNR) HandleChooseLevelNr(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); @@ -2394,7 +2413,7 @@ void HandleKey(Key key, int key_status) switch (key) { case KSYM_Escape: - RequestQuitGame(setup.ask_on_escape); + RequestQuitGame(TRUE); break; default: @@ -2551,6 +2570,7 @@ void HandleJoystick(void) } if (newbutton && (game_status == GAME_MODE_PSEUDO_TYPENAME || + game_status == GAME_MODE_PSEUDO_TYPENAMES || anyTextGadgetActive())) { // leave name input in main menu or text input gadget @@ -2597,6 +2617,7 @@ void HandleJoystick(void) { case GAME_MODE_TITLE: case GAME_MODE_MAIN: + case GAME_MODE_NAMES: case GAME_MODE_LEVELS: case GAME_MODE_LEVELNR: case GAME_MODE_SETUP: @@ -2610,6 +2631,8 @@ void HandleJoystick(void) HandleTitleScreen(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); else if (game_status == GAME_MODE_MAIN) HandleMainMenu(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); + else if (game_status == GAME_MODE_NAMES) + HandleChoosePlayerName(0,0,dx,dy,newbutton?MB_MENU_CHOICE:MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevelSet(0,0,dx,dy,newbutton?MB_MENU_CHOICE : MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELNR)