player->mouse_action.ly = 0;
player->mouse_action.button = 0;
+ player->effective_mouse_action.lx = 0;
+ player->effective_mouse_action.ly = 0;
+ player->effective_mouse_action.button = 0;
+
player->score = 0;
player->score_final = 0;
/* when playing tape, read previously recorded player input from tape data */
recorded_player_action = (tape.playing ? TapePlayAction() : NULL);
+ local_player->effective_mouse_action = local_player->mouse_action;
+
if (recorded_player_action != NULL)
- SetMouseActionFromTapeAction(&local_player->mouse_action,
+ SetMouseActionFromTapeAction(&local_player->effective_mouse_action,
recorded_player_action);
/* TapePlayAction() may return NULL when toggling to "pause before death" */
tape.player_participates[i] = TRUE;
}
- SetTapeActionFromMouseAction(tape_action, &local_player->mouse_action);
+ SetTapeActionFromMouseAction(tape_action,
+ &local_player->effective_mouse_action);
/* only record actions from input devices, but not programmed actions */
if (tape.recording)
{
boolean warp_mode = (tape.playing && tape.warp_forward && !tape.pausing);
- GameActions_MM(local_player->mouse_action, warp_mode);
+ GameActions_MM(local_player->effective_mouse_action, warp_mode);
}
void GameActions_RND_Main()
byte programmed_action; /* action forced by game itself (like moving
through doors); overrides other actions */
- struct MouseActionInfo mouse_action; /* (used by MM engine only) */
+ struct MouseActionInfo mouse_action; /* (used by MM engine only) */
+ struct MouseActionInfo effective_mouse_action; /* (used by MM engine only) */
int jx, jy, last_jx, last_jy;
int MovDir, MovPos, GfxDir, GfxPos;