int el2img_mm(int);
+void CheckSingleStepMode_MM(boolean);
+
void getGraphicSource(int, int, Bitmap **, int *, int *);
void getMiniGraphicSource(int, Bitmap **, int *, int *);
void getSizedGraphicSource(int, int, int, Bitmap **, int *, int *);
{
int lx = getLevelFromScreenX(mx);
int ly = getLevelFromScreenY(my);
+ int new_button = (!local_player->mouse_action.button && button);
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);
ClickElement(action.lx, action.ly, action.button);
GameActions_MM_Ext(action, warp_mode);
+
+ CheckSingleStepMode_MM(action.button == MB_RELEASED);
}
void MovePacMen()
}
}
+void CheckSaveEngineSnapshot_MM(boolean button_released)
+{
+ CheckSaveEngineSnapshotToList();
+}
+
void CheckSingleStepMode_EM(byte action[MAX_PLAYERS], int frame,
boolean any_player_moving,
boolean any_player_snapping,
CheckSaveEngineSnapshot_SP(murphy_is_waiting, murphy_is_dropping);
}
+void CheckSingleStepMode_MM(boolean button_released)
+{
+ if (tape.single_step && tape.recording && !tape.pausing)
+ if (button_released)
+ TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
+
+ CheckSaveEngineSnapshot_MM(button_released);
+}
+
void getGraphicSource_SP(struct GraphicInfo_SP *g_sp,
int graphic, int sync_frame, int x, int y)
{