X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=7a3f9987d4b09a80ebdc48c970c8eb118f3b4727;hb=2189cd97616201ebb5d6cea37d2a72251ea9be50;hp=08e571d17427f418b066613bde349cb57c747b6e;hpb=38f700d51edfba27dc23f89530d8d0c2f6ddd1c3;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 08e571d1..7a3f9987 100644 --- a/src/events.c +++ b/src/events.c @@ -401,6 +401,7 @@ void SetPlayerMouseAction(int mx, int my, int button) { int lx = getLevelFromScreenX(mx); int ly = getLevelFromScreenY(my); + int new_button = (!local_player->mouse_action.button && button); ClearPlayerMouseAction(); @@ -413,9 +414,9 @@ void SetPlayerMouseAction(int mx, int my, int button) if (tape.recording && tape.pausing && tape.use_mouse) { - /* prevent button release or motion events from un-pausing a paused game */ - if (button && !motion_status) - TapeTogglePause(TAPE_TOGGLE_MANUAL); + /* un-pause a paused game only if mouse button was newly pressed down */ + if (new_button) + TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); } SetTileCursorXY(lx, ly); @@ -2342,7 +2343,12 @@ void HandleJoystick() return; } - if (tape.recording && tape.pausing && !tape.use_mouse) + if (tape.single_step && tape.recording && tape.pausing && !tape.use_mouse) + { + if (joystick & JOY_ACTION) + TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); + } + else if (tape.recording && tape.pausing && !tape.use_mouse) { if (joystick & JOY_ACTION) TapeTogglePause(TAPE_TOGGLE_MANUAL);