X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=a43db7c6510eaa59ea666d62baee3686480755e5;hb=eadc24d24f347daac5f6f7b381c8c151f0018dac;hp=10950bd9513e2a993531382756a07658583c7996;hpb=ff96039fa2e69d11a4fb72df8d070d4ff5477d5e;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 10950bd9..a43db7c6 100644 --- a/src/events.c +++ b/src/events.c @@ -128,7 +128,7 @@ static boolean SkipPressedMouseMotionEvent(const Event *event) return FALSE; } -static boolean WaitEventFiltered(Event *event) +static boolean WaitValidEvent(Event *event) { WaitEvent(event); @@ -152,7 +152,7 @@ static boolean WaitEventFiltered(Event *event) boolean NextValidEvent(Event *event) { while (PendingEvent()) - if (WaitEventFiltered(event)) + if (WaitValidEvent(event)) return TRUE; return FALSE; @@ -298,7 +298,8 @@ void HandleMouseCursor() cursor_inside_playfield && DelayReached(&special_cursor_delay, special_cursor_delay_value)) { - SetMouseCursor(CURSOR_PLAYFIELD); + if (level.game_engine_type != GAME_ENGINE_TYPE_MM) + SetMouseCursor(CURSOR_PLAYFIELD); } } else if (gfx.cursor_mode != CURSOR_DEFAULT) @@ -341,12 +342,10 @@ void EventLoop(void) void ClearEventQueue() { - while (PendingEvent()) - { - Event event; - - WaitEvent(&event); + Event event; + while (NextValidEvent(&event)) + { switch (event.type) { case EVENT_BUTTONRELEASE: @@ -393,7 +392,8 @@ void SleepWhileUnmapped() { Event event; - WaitEvent(&event); + if (!WaitValidEvent(&event)) + continue; switch (event.type) { @@ -1324,14 +1324,17 @@ void HandleButton(int mx, int my, int button, int button_nr) HandleSetupScreen(mx, my, 0, 0, button); break; -#if defined(TARGET_SDL2) case GAME_MODE_PLAYING: - HandleFollowFinger(mx, my, button); + if (level.game_engine_type == GAME_ENGINE_TYPE_MM && !tape.pausing) + ClickElement(mx, my, button); +#if defined(TARGET_SDL2) + else + HandleFollowFinger(mx, my, button); #endif #ifdef DEBUG - if (button == MB_PRESSED && !motion_status && IN_GFX_FIELD_PLAY(mx, my) && - GetKeyModState() & KMOD_Control) + if (button == MB_PRESSED && !motion_status && !button_hold && + IN_GFX_FIELD_PLAY(mx, my) && GetKeyModState() & KMOD_Control) DumpTileFromScreen(mx, my); #endif @@ -1893,7 +1896,9 @@ void HandleKey(Key key, int key_status) void HandleNoEvent() { // if (button_status && game_status != GAME_MODE_PLAYING) - if (button_status && (game_status != GAME_MODE_PLAYING || tape.pausing)) + if (button_status && (game_status != GAME_MODE_PLAYING || + tape.pausing || + level.game_engine_type == GAME_ENGINE_TYPE_MM)) { HandleButton(0, 0, button_status, -button_status); }