#define VIDEO_FFWD_LABEL_XSIZE VIDEO_LABEL_XSIZE
#define VIDEO_FFWD_LABEL_YSIZE VIDEO_LABEL_YSIZE
#define VIDEO_FFWD_SYMBOL_XPOS VIDEO_SYMBOL_XPOS
-#define VIDEO_FFWD_SYMBOL_YPOS 126
+#define VIDEO_FFWD_SYMBOL_YPOS 193
#define VIDEO_FFWD_SYMBOL_XSIZE 27
#define VIDEO_FFWD_SYMBOL_YSIZE VIDEO_SYMBOL_YSIZE
#define VIDEO_PBEND_LABEL_XSIZE VIDEO_LABEL_XSIZE
#define VIDEO_PBEND_LABEL_YSIZE VIDEO_LABEL_YSIZE
#define VIDEO_PBEND_SYMBOL_XPOS VIDEO_SYMBOL_XPOS
-#define VIDEO_PBEND_SYMBOL_YPOS 126
+#define VIDEO_PBEND_SYMBOL_YPOS 221
#define VIDEO_PBEND_SYMBOL_XSIZE 27
#define VIDEO_PBEND_SYMBOL_YSIZE VIDEO_SYMBOL_YSIZE
#define VIDEO_WARP_LABEL_XSIZE VIDEO_LABEL_XSIZE
#define VIDEO_WARP_LABEL_YSIZE VIDEO_LABEL_YSIZE
#define VIDEO_WARP_SYMBOL_XPOS VIDEO_SYMBOL_XPOS
-#define VIDEO_WARP_SYMBOL_YPOS 152
+#define VIDEO_WARP_SYMBOL_YPOS 165
#define VIDEO_WARP_SYMBOL_XSIZE 27
#define VIDEO_WARP_SYMBOL_YSIZE VIDEO_SYMBOL_YSIZE
#define VIDEO_WARP2_SYMBOL_XPOS VIDEO_SYMBOL_XPOS
-#define VIDEO_WARP2_SYMBOL_YPOS 139
+#define VIDEO_WARP2_SYMBOL_YPOS 152
#define VIDEO_WARP2_SYMBOL_XSIZE 27
#define VIDEO_WARP2_SYMBOL_YSIZE VIDEO_SYMBOL_YSIZE
#define VIDEO_1STEP_SYMBOL_XPOS (VIDEO_SYMBOL_XPOS + 18)
-#define VIDEO_1STEP_SYMBOL_YPOS 113
+#define VIDEO_1STEP_SYMBOL_YPOS 139
#define VIDEO_1STEP_SYMBOL_XSIZE (VIDEO_SYMBOL_XSIZE - 18)
#define VIDEO_1STEP_SYMBOL_YSIZE VIDEO_SYMBOL_YSIZE
/* tape control functions */
/* ========================================================================= */
-void TapeErase()
+static void TapeSetDate()
{
time_t epoch_seconds = time(NULL);
- struct tm *time = localtime(&epoch_seconds);
+ struct tm *now = localtime(&epoch_seconds);
+
+ tape.date = 10000 * (now->tm_year % 100) + 100 * now->tm_mon + now->tm_mday;
+}
+
+void TapeErase()
+{
int i;
tape.length = 0;
tape.pos[tape.counter].delay = 0;
tape.changed = TRUE;
- tape.date = 10000*(time->tm_year % 100) + 100*time->tm_mon + time->tm_mday;
tape.random_seed = InitRND(NEW_RANDOMIZE);
tape.file_version = FILE_VERSION_ACTUAL;
tape.game_version = GAME_VERSION_ACTUAL;
tape.engine_version = level.game_version;
+ TapeSetDate();
+
#if 0
printf("::: tape.engine_version = level.game_version = %d \n",
level.game_version);
{
TapeStartRecording();
-#if defined(PLATFORM_UNIX)
+#if defined(NETWORK_AVALIABLE)
if (options.network)
SendToServer_StartPlaying();
else
tape.recording = TRUE;
tape.changed = TRUE;
- DrawVideoDisplay(VIDEO_STATE_PLAY_OFF | VIDEO_STATE_REC_ON,0);
+ TapeSetDate();
+
+ DrawVideoDisplay(VIDEO_STATE_DATE_ON, tape.date);
+ DrawVideoDisplay(VIDEO_STATE_PLAY_OFF | VIDEO_STATE_REC_ON, 0);
}
void TapeHaltRecording()
DrawVideoDisplay(VIDEO_STATE_WARP2_ON, VIDEO_DISPLAY_SYMBOL_ONLY);
}
- if (TimePlayed > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH)
+ if (TapeTime > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH)
{
TapeTogglePause(TAPE_TOGGLE_MANUAL);
return NULL;
DrawVideoDisplay(VIDEO_STATE_WARP2_ON, VIDEO_DISPLAY_SYMBOL_ONLY);
}
}
+#if 0
+ /* !!! this makes things much slower !!! */
else if (tape.warp_forward)
{
if ((FrameCounter / 20) % 2)
DrawVideoDisplay(VIDEO_STATE_WARP_ON, VIDEO_DISPLAY_SYMBOL_ONLY);
}
+#endif
if (tape.counter >= tape.length) /* end of tape reached */
{
void TapeQuickLoad()
{
+ if (tape.recording && !Request("Stop recording and load tape ?",
+ REQ_ASK | REQ_STAY_CLOSED))
+ {
+ BlitBitmap(bitmap_db_door, bitmap_db_door,
+ DOOR_GFX_PAGEX2, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE,
+ DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+ OpenDoor(DOOR_OPEN_1);
+
+ return;
+ }
+
if (game_status == GAME_MODE_PLAYING || game_status == GAME_MODE_MAIN)
{
TapeStop();
}
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;
- tape.warp_forward = FALSE;
+
#if 1
DrawVideoDisplay(VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PLAY_ON, 0);
#else