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;
static void SetMouseActionFromTapeAction(struct MouseActionInfo *mouse_action,
byte *tape_action)
{
+ if (!tape.use_mouse)
+ return;
+
mouse_action->lx = tape_action[TAPE_ACTION_LX];
mouse_action->ly = tape_action[TAPE_ACTION_LY];
mouse_action->button = tape_action[TAPE_ACTION_BUTTON];
static void SetTapeActionFromMouseAction(byte *tape_action,
struct MouseActionInfo *mouse_action)
{
+ if (!tape.use_mouse)
+ return;
+
tape_action[TAPE_ACTION_LX] = mouse_action->lx;
tape_action[TAPE_ACTION_LY] = mouse_action->ly;
tape_action[TAPE_ACTION_BUTTON] = mouse_action->button;
/* 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()
PlayLevelSoundElementAction(x, y, element, action);
}
+void PlayLevelSound_MM(int xx, int yy, int element_mm, int action_mm)
+{
+ int element = map_element_MM_to_RND(element_mm);
+ int action = map_action_MM_to_RND(action_mm);
+ int offset = 0;
+ int x = xx - offset;
+ int y = yy - offset;
+
+ if (!IS_MM_ELEMENT(element))
+ element = EL_MM_DEFAULT;
+
+ PlayLevelSoundElementAction(x, y, element, action);
+}
+
+void PlaySound_MM(int sound_mm)
+{
+ int sound = map_sound_MM_to_RND(sound_mm);
+
+ if (sound == SND_UNDEFINED)
+ return;
+
+ PlaySound(sound);
+}
+
+void PlaySoundLoop_MM(int sound_mm)
+{
+ int sound = map_sound_MM_to_RND(sound_mm);
+
+ if (sound == SND_UNDEFINED)
+ return;
+
+ PlaySoundLoop(sound);
+}
+
+void StopSound_MM(int sound_mm)
+{
+ int sound = map_sound_MM_to_RND(sound_mm);
+
+ if (sound == SND_UNDEFINED)
+ return;
+
+ StopSound(sound);
+}
+
void RaiseScore(int value)
{
local_player->score += value;