{
int lx = getLevelFromScreenX(mx);
int ly = getLevelFromScreenY(my);
+ int new_button = (!local_player->mouse_action.button && button);
+
+ if (local_player->mouse_action.button_hint)
+ button = local_player->mouse_action.button_hint;
ClearPlayerMouseAction();
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);
return;
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ {
+ if (strEqual(setup.touch.control_type, TOUCH_CONTROL_OFF))
+ local_player->mouse_action.button_hint =
+ (event->type == EVENT_FINGERRELEASE ? MB_NOT_PRESSED :
+ event->x < 0.5 ? MB_LEFTBUTTON :
+ event->x > 0.5 ? MB_RIGHTBUTTON :
+ MB_NOT_PRESSED);
+
return;
+ }
if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS))
HandleFingerEvent_VirtualButtons(event);
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);