},
};
+#if 0
+ if (state & VIDEO_STATE_FFWD_OFF)
+ {
+#if 1
+ int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+ if (value != VIDEO_DISPLAY_SYMBOL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_LABEL_XPOS,
+ cy + VIDEO_LABEL_YPOS,
+ VIDEO_LABEL_XSIZE,
+ VIDEO_LABEL_YSIZE,
+ VX + VIDEO_LABEL_XPOS,
+ VY + VIDEO_LABEL_YPOS);
+
+ cx = DOOR_GFX_PAGEX3;
+ cy = DOOR_GFX_PAGEY2;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_FFWD_SYMBOL_XPOS,
+ cy + VIDEO_SYMBOL_YPOS,
+ VIDEO_FFWD_SYMBOL_XSIZE,
+ VIDEO_FFWD_SYMBOL_YSIZE,
+ VX + VIDEO_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+#else
+ int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PLAY_SYMBOL_XPOS - 9,
+ cy + VIDEO_PLAY_SYMBOL_YPOS,
+ VIDEO_PLAY_SYMBOL_XSIZE - 2,
+ VIDEO_PLAY_SYMBOL_YSIZE,
+ VX + VIDEO_PLAY_SYMBOL_XPOS - 9,
+ VY + VIDEO_PLAY_SYMBOL_YPOS);
+#endif
+ }
+#endif
+
+#if 0
+ if (state & VIDEO_STATE_PBEND_OFF)
+ {
+#if 1
+ int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+ if (value != VIDEO_DISPLAY_SYMBOL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_LABEL_XPOS,
+ cy + VIDEO_LABEL_YPOS,
+ VIDEO_LABEL_XSIZE,
+ VIDEO_LABEL_YSIZE,
+ VX + VIDEO_LABEL_XPOS,
+ VY + VIDEO_LABEL_YPOS);
+
+ cx = DOOR_GFX_PAGEX3;
+ cy = DOOR_GFX_PAGEY2;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PBEND_SYMBOL_XPOS,
+ cy + VIDEO_SYMBOL_YPOS,
+ VIDEO_PBEND_SYMBOL_XSIZE,
+ VIDEO_PBEND_SYMBOL_YSIZE,
+ VX + VIDEO_PBEND_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+#else
+ int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_REC_LABEL_XPOS,
+ cy + VIDEO_REC_LABEL_YPOS,
+ VIDEO_PBEND_LABEL_XSIZE,
+ VIDEO_PBEND_LABEL_YSIZE,
+ VX + VIDEO_REC_LABEL_XPOS,
+ VY + VIDEO_REC_LABEL_YPOS);
+#endif
+ }
+#endif
+
+#if 0
+ if (state & VIDEO_STATE_1STEP_OFF)
+ {
+ int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_1STEP_SYMBOL_XPOS,
+ cy + VIDEO_SYMBOL_YPOS,
+ VIDEO_1STEP_SYMBOL_XSIZE,
+ VIDEO_1STEP_SYMBOL_YSIZE,
+ VX + VIDEO_1STEP_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+ }
+#endif
+
for (k = 0; k < NUM_TAPE_FUNCTION_STATES; k++) /* on or off states */
{
for (i = 0; i < NUM_TAPE_FUNCTIONS; i++) /* record, play, ... */
}
}
+#if 0
+ if (state & VIDEO_STATE_FFWD_ON)
+ {
+#if 1
+ int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1;
+
+ if (value != VIDEO_DISPLAY_SYMBOL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_FFWD_LABEL_XPOS,
+ cy + VIDEO_FFWD_LABEL_YPOS,
+ VIDEO_LABEL_XSIZE,
+ VIDEO_LABEL_YSIZE,
+ VX + VIDEO_LABEL_XPOS,
+ VY + VIDEO_LABEL_YPOS);
+
+ cx = DOOR_GFX_PAGEX6;
+ cy = DOOR_GFX_PAGEY1;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_FFWD_SYMBOL_XPOS,
+ cy + VIDEO_FFWD_SYMBOL_YPOS,
+ VIDEO_FFWD_SYMBOL_XSIZE,
+ VIDEO_FFWD_SYMBOL_YSIZE,
+ VX + VIDEO_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+#else
+ int cx = DOOR_GFX_PAGEX4, cy = DOOR_GFX_PAGEY2;
+
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PLAY_SYMBOL_XPOS,
+ cy + VIDEO_PLAY_SYMBOL_YPOS,
+ VIDEO_PLAY_SYMBOL_XSIZE - 2,
+ VIDEO_PLAY_SYMBOL_YSIZE,
+ VX + VIDEO_PLAY_SYMBOL_XPOS - 9,
+ VY + VIDEO_PLAY_SYMBOL_YPOS);
+#endif
+ }
+#endif
+
+#if 0
+ if (state & VIDEO_STATE_PBEND_ON)
+ {
+#if 1
+ int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1;
+
+ if (value != VIDEO_DISPLAY_SYMBOL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PBEND_LABEL_XPOS,
+ cy + VIDEO_PBEND_LABEL_YPOS,
+ VIDEO_LABEL_XSIZE,
+ VIDEO_LABEL_YSIZE,
+ VX + VIDEO_LABEL_XPOS,
+ VY + VIDEO_LABEL_YPOS);
+
+ cx = DOOR_GFX_PAGEX6;
+ cy = DOOR_GFX_PAGEY1;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PBEND_SYMBOL_XPOS,
+ cy + VIDEO_PBEND_SYMBOL_YPOS,
+ VIDEO_PBEND_SYMBOL_XSIZE,
+ VIDEO_PBEND_SYMBOL_YSIZE,
+ VX + VIDEO_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+#else
+ int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1;
+
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_PBEND_LABEL_XPOS,
+ cy + VIDEO_PBEND_LABEL_YPOS,
+ VIDEO_PBEND_LABEL_XSIZE,
+ VIDEO_PBEND_LABEL_YSIZE,
+ VX + VIDEO_REC_LABEL_XPOS,
+ VY + VIDEO_REC_LABEL_YPOS);
+#endif
+ }
+#endif
+
+#if 0
+ if (state & VIDEO_STATE_1STEP_ON)
+ {
+ int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1;
+
+ if (value != VIDEO_DISPLAY_LABEL_ONLY)
+ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
+ cx + VIDEO_1STEP_SYMBOL_XPOS,
+ cy + VIDEO_1STEP_SYMBOL_YPOS,
+ VIDEO_1STEP_SYMBOL_XSIZE,
+ VIDEO_1STEP_SYMBOL_YSIZE,
+ VX + VIDEO_1STEP_SYMBOL_XPOS,
+ VY + VIDEO_SYMBOL_YPOS);
+ }
+#endif
+
if (state & VIDEO_STATE_DATE_ON)
{
int tag = value % 100;
int2str(sec, 2), FONT_TAPE_RECORDER);
}
+#if 1
redraw_mask |= REDRAW_DOOR_2;
+#else
+ if (state & VIDEO_STATE_DATE)
+ redraw_mask |= REDRAW_VIDEO_1;
+ if ((state & ~VIDEO_STATE_DATE) & VIDEO_STATE)
+ redraw_mask |= REDRAW_VIDEO_2;
+ if (state & VIDEO_PRESS)
+ redraw_mask |= REDRAW_VIDEO_3;
+#endif
}
void DrawCompleteVideoDisplay()
TapeSetDate();
+#if 0
+ printf("::: tape.engine_version = level.game_version = %d \n",
+ level.game_version);
+#endif
+
for (i = 0; i < MAX_PLAYERS; i++)
tape.player_participates[i] = FALSE;
}
InitRND(tape.random_seed);
}
-static void TapeSetRandomSeed(long random_seed)
-{
- tape.random_seed = InitRND(random_seed);
-}
-
-void TapeStartRecording(long random_seed)
+void TapeStartRecording()
{
if (!TAPE_IS_STOPPED(tape))
TapeStop();
TapeErase();
TapeRewind();
- TapeSetRandomSeed(random_seed);
tape.recording = TRUE;
static void TapeStartGameRecording()
{
- TapeStartRecording(NEW_RANDOMIZE);
+ TapeStartRecording();
#if defined(NETWORK_AVALIABLE)
if (options.network)
void TapeStopRecording()
{
+#if 0
+ if (!tape.recording)
+ return;
+#endif
+
TapeHaltRecording();
tape.recording = FALSE;
{
int i;
- if (!tape.recording) /* (record action even when tape is paused) */
+#if 1
+ if (!tape.recording) /* record action even when tape is paused! */
return;
+#else
+ if (!tape.recording || tape.pausing)
+ return;
+#endif
if (tape.counter >= MAX_TAPE_LEN - 1)
{
return;
}
+#if 0
+ printf("::: %05d: recording action: %d\n", FrameCounter, action[0]);
+#endif
+
if (tape.pos[tape.counter].delay > 0) /* already stored action */
{
boolean changed_events = FALSE;
if (tape.pos[tape.counter].delay == 0) /* store new action */
{
+
+#if 0
+ printf("::: %05d: new sequence\n", FrameCounter);
+#endif
+
for (i = 0; i < MAX_PLAYERS; i++)
tape.pos[tape.counter].action[i] = action[i];
{
int state = 0;
+#if 0
+ if (!tape.recording && !tape.playing)
+ return;
+#endif
+
if (tape.pause_before_death)
state |= VIDEO_STATE_PBEND_OFF;
else if (tape.fast_forward)
DrawVideoDisplay(state, 0);
+#if 0
+ if (tape.pausing)
+ DrawVideoDisplay(VIDEO_STATE_PAUSE_ON, 0);
+#endif
+
if (tape.warp_forward)
{
TapeStopWarpForward();
tape.quick_resume = FALSE;
TapeAppendRecording();
+#if 0
+ TapeTogglePause(toggle_manual);
+#endif
}
}
}
void TapeStopPlaying()
{
+#if 0
+ if (!tape.playing)
+ return;
+#endif
+
tape.playing = FALSE;
tape.pausing = FALSE;
tape.delay_played = 0;
}
+#if 0
+ printf("::: %05d: replaying action: %d\n", FrameCounter, action[0]);
+#endif
+
return action;
}
void TapeStop()
{
+#if 0
+ if (tape.recording)
+ printf("::: stopped recording: %d\n", FrameCounter);
+ else if (tape.playing)
+ printf("::: stopped playing: %d\n\n", FrameCounter);
+#endif
+
TapeStopRecording();
TapeStopPlaying();
{
tape.warp_forward = TRUE;
+#if 1
if (!tape.fast_forward && !tape.pause_before_death)
{
tape.pausing = FALSE;
TapeDeactivateDisplayOn();
}
+#else
+ if (!tape.fast_forward || tape.pause_before_death)
+ {
+ tape.pausing = FALSE;
+ tape.deactivate_display = TRUE;
+
+ TapeDeactivateDisplayOn();
+ }
+#endif
if (tape.fast_forward || tape.pause_before_death)
DrawVideoDisplay(VIDEO_STATE_WARP_ON, VIDEO_DISPLAY_SYMBOL_ONLY);
TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING);
+#if 0
+#if 1
+ if (game_status == GAME_MODE_PLAYING)
+#endif
+ {
+ RedrawPlayfield(TRUE, 0,0,0,0);
+ DrawGameDoorValues();
+ }
+#endif
+
if (tape.pause_before_death)
state |= VIDEO_STATE_WARP_OFF | VIDEO_STATE_PBEND_ON;
else if (tape.fast_forward)
continue;
}
-#if 0
- /* ACTIVATE THIS FOR LOADING/TESTING OF LEVELS ONLY */
- printf("(only testing level)\n");
- continue;
-#endif
-
LoadSolutionTape(level_nr);
-
+#if 1
if (tape.no_valid_file)
+#else
+ if (TAPE_IS_EMPTY(tape))
+#endif
{
num_tape_missing++;
if (level_nr >= 0 && level_nr < MAX_TAPES_PER_SET)
else /* WARP FORWARD PLAY -> PLAY */
{
TapeStopWarpForward();
+
+#if 0
+ if (tape.pause_before_death)
+ DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_PLAY_ON, 0);
+ else if (tape.fast_forward)
+ DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_FFWD_ON, 0);
+ else
+ DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_PBEND_ON, 0);
+#endif
}
}
else if (tape.recording)
else if (!tape.pause_before_death) /* FFWD PLAY -> AUTO PAUSE */
{
tape.pause_before_death = TRUE;
+#if 1
DrawVideoDisplay(VIDEO_STATE_FFWD_OFF | VIDEO_STATE_PBEND_ON, 0);
+#else
+ DrawVideoDisplay(VIDEO_STATE_PBEND_ON, VIDEO_DISPLAY_LABEL_ONLY);
+#endif
}
else /* AUTO PAUSE -> NORMAL PLAY */
{
+#if 1
if (tape.warp_forward)
TapeStopWarpForward();
-
+#else
+ tape.warp_forward = FALSE;
+#endif
tape.fast_forward = FALSE;
tape.pause_before_death = FALSE;
+#if 1
DrawVideoDisplay(VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PLAY_ON, 0);
+#else
+ DrawVideoDisplay(VIDEO_STATE_FFWD_OFF | VIDEO_STATE_PBEND_OFF, 0);
+#endif
}
}
break;