if (TimeLeft)
{
- if (setup.sound_loops)
+ if (!tape.playing && setup.sound_loops)
PlaySoundExt(SND_SIRR, PSND_MAX_VOLUME, PSND_MAX_RIGHT, PSND_LOOP);
while(TimeLeft > 0)
{
- if (!setup.sound_loops)
+ if (!tape.playing && !setup.sound_loops)
PlaySoundStereo(SND_SIRR, PSND_MAX_RIGHT);
if (TimeLeft > 0 && !(TimeLeft % 10))
RaiseScore(level.score[SC_ZEITBONUS]);
TimeLeft--;
DrawText(DX_TIME, DY_TIME, int2str(TimeLeft, 3), FS_SMALL, FC_YELLOW);
BackToFront();
- Delay(10);
+
+ if (!tape.playing)
+ Delay(10);
}
- if (setup.sound_loops)
+ if (!tape.playing && setup.sound_loops)
StopSound(SND_SIRR);
}
else if (level.time == 0) /* level without time limit */
{
- if (setup.sound_loops)
+ if (!tape.playing && setup.sound_loops)
PlaySoundExt(SND_SIRR, PSND_MAX_VOLUME, PSND_MAX_RIGHT, PSND_LOOP);
while(TimePlayed < 999)
{
- if (!setup.sound_loops)
+ if (!tape.playing && !setup.sound_loops)
PlaySoundStereo(SND_SIRR, PSND_MAX_RIGHT);
if (TimePlayed < 999 && !(TimePlayed % 10))
RaiseScore(level.score[SC_ZEITBONUS]);
TimePlayed++;
DrawText(DX_TIME, DY_TIME, int2str(TimePlayed, 3), FS_SMALL, FC_YELLOW);
BackToFront();
- Delay(10);
+
+ if (!tape.playing)
+ Delay(10);
}
- if (setup.sound_loops)
+ if (!tape.playing && setup.sound_loops)
StopSound(SND_SIRR);
}
game_status = HALLOFFAME;
DrawHallOfFame(hi_pos);
if (raise_level)
+ {
level_nr++;
+ TapeErase();
+ }
}
else
{
game_status = MAINMENU;
if (raise_level)
+ {
level_nr++;
+ TapeErase();
+ }
DrawMainMenu();
}
{
static byte stored_player_action[MAX_PLAYERS];
static int num_stored_actions = 0;
+#if 0
static boolean save_tape_entry = FALSE;
+#endif
boolean moved = FALSE, snapped = FALSE, bombed = FALSE;
- int jx = player->jx, jy = player->jy;
int left = player_action & JOY_LEFT;
int right = player_action & JOY_RIGHT;
int up = player_action & JOY_UP;
if (player_action)
{
+#if 0
save_tape_entry = TRUE;
+#endif
player->frame_reset_delay = 0;
if (button1)
moved = MoveFigure(player, dx, dy);
}
+#if 0
if (tape.recording && (moved || snapped || bombed))
{
if (bombed && !moved)
player_action &= JOY_BUTTON;
stored_player_action[player->index_nr] = player_action;
+ save_tape_entry = TRUE;
}
else if (tape.playing && snapped)
SnapField(player, 0, 0); /* stop snapping */
+#else
+ stored_player_action[player->index_nr] = player_action;
+#endif
}
else
{
player->Frame = 0;
}
+#if 0
if (tape.recording && num_stored_actions >= MAX_PLAYERS && save_tape_entry)
{
TapeRecordAction(stored_player_action);
num_stored_actions = 0;
save_tape_entry = FALSE;
}
+#else
+ if (tape.recording && num_stored_actions >= MAX_PLAYERS)
+ {
+ TapeRecordAction(stored_player_action);
+ num_stored_actions = 0;
+ }
+#endif
+#if 0
if (tape.playing && !tape.pausing && !player_action &&
tape.counter < tape.length)
{
+ int jx = player->jx, jy = player->jy;
int next_joy =
tape.pos[tape.counter].action[player->index_nr] & (JOY_LEFT|JOY_RIGHT);
}
}
}
+#endif
}
void GameActions()
if (!player->active || (!dx && !dy))
return FALSE;
+#if 0
if (!FrameReached(&player->move_delay, player->move_delay_value) &&
!tape.playing)
return FALSE;
+#else
+ if (!FrameReached(&player->move_delay, player->move_delay_value) &&
+ !(tape.playing && tape.file_version < FILE_VERSION_2_0))
+ return FALSE;
+#endif
/* remove the last programmed player action */
player->programmed_action = 0;
if (player->push_delay == 0)
player->push_delay = FrameCounter;
+#if 0
if (!FrameReached(&player->push_delay, player->push_delay_value) &&
!tape.playing && element != EL_SPRING)
return MF_NO_ACTION;
+#else
+ if (!FrameReached(&player->push_delay, player->push_delay_value) &&
+ !(tape.playing && tape.file_version < FILE_VERSION_2_0) &&
+ element != EL_SPRING)
+ return MF_NO_ACTION;
+#endif
RemoveField(x, y);
Feld[x+dx][y+dy] = element;
if (player->push_delay == 0)
player->push_delay = FrameCounter;
+#if 0
if (!FrameReached(&player->push_delay, player->push_delay_value) &&
!tape.playing && element != EL_BALLOON)
return MF_NO_ACTION;
+#else
+ if (!FrameReached(&player->push_delay, player->push_delay_value) &&
+ !(tape.playing && tape.file_version < FILE_VERSION_2_0) &&
+ element != EL_BALLOON)
+ return MF_NO_ACTION;
+#endif
if (IS_SB_ELEMENT(element))
{