X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.h;h=361806ad0ed92b6f591f623fc9f4abfdda8d80f5;hb=5cbb24e1974b59f7580428768201b950423b88e2;hp=c3b3a6deaab4af8452a12521572b5d73159c4f90;hpb=84b4d1874b7dfed42ace079941a65baea0ac4ff6;p=rocksndiamonds.git diff --git a/src/tape.h b/src/tape.h index c3b3a6de..361806ad 100644 --- a/src/tape.h +++ b/src/tape.h @@ -14,19 +14,19 @@ // values for TapeTogglePause() -#define TAPE_TOGGLE_AUTOMATIC 0 -#define TAPE_TOGGLE_MANUAL (1 << 0) -#define TAPE_TOGGLE_PLAY_PAUSE (1 << 1) +#define TAPE_TOGGLE_AUTOMATIC 0 +#define TAPE_TOGGLE_MANUAL (1 << 0) +#define TAPE_TOGGLE_PLAY_PAUSE (1 << 1) // values for tape properties -#define MAX_TAPE_LEN (10000 * FRAMES_PER_SECOND) // max.time x fps +#define MAX_TAPE_LEN (10000 * FRAMES_PER_SECOND) // max.time x fps // values for tape action array positions -#define TAPE_ACTION_LX (MAX_PLAYERS + 0) -#define TAPE_ACTION_LY (MAX_PLAYERS + 1) -#define TAPE_ACTION_BUTTON (MAX_PLAYERS + 2) +#define TAPE_ACTION_LX (MAX_PLAYERS + 0) +#define TAPE_ACTION_LY (MAX_PLAYERS + 1) +#define TAPE_ACTION_BUTTON (MAX_PLAYERS + 2) -#define MAX_TAPE_ACTIONS (MAX_PLAYERS + 3) +#define MAX_TAPE_ACTIONS (MAX_PLAYERS + 3) // values for tape actions stored in tape file #define TAPE_USE_KEY_ACTIONS_ONLY 0 @@ -50,71 +50,71 @@ #define MAX_SCORE_TAPE_BASENAME_LEN 24 // some positions in the video tape control window -#define VIDEO_DISPLAY1_XPOS 5 -#define VIDEO_DISPLAY1_YPOS 5 -#define VIDEO_DISPLAY2_XPOS 5 -#define VIDEO_DISPLAY2_YPOS 41 -#define VIDEO_DISPLAY_XSIZE 90 -#define VIDEO_DISPLAY_YSIZE 31 -#define VIDEO_BUTTON_XSIZE 18 -#define VIDEO_BUTTON_YSIZE 18 -#define VIDEO_CONTROL_XPOS 5 -#define VIDEO_CONTROL_YPOS 77 -#define VIDEO_CONTROL_XSIZE VIDEO_DISPLAY_XSIZE -#define VIDEO_CONTROL_YSIZE VIDEO_BUTTON_YSIZE +#define VIDEO_DISPLAY1_XPOS 5 +#define VIDEO_DISPLAY1_YPOS 5 +#define VIDEO_DISPLAY2_XPOS 5 +#define VIDEO_DISPLAY2_YPOS 41 +#define VIDEO_DISPLAY_XSIZE 90 +#define VIDEO_DISPLAY_YSIZE 31 +#define VIDEO_BUTTON_XSIZE 18 +#define VIDEO_BUTTON_YSIZE 18 +#define VIDEO_CONTROL_XPOS 5 +#define VIDEO_CONTROL_YPOS 77 +#define VIDEO_CONTROL_XSIZE VIDEO_DISPLAY_XSIZE +#define VIDEO_CONTROL_YSIZE VIDEO_BUTTON_YSIZE // values for video tape control -#define VIDEO_STATE_PLAY_OFF (1 << 0) -#define VIDEO_STATE_PLAY_ON (1 << 1) -#define VIDEO_STATE_REC_OFF (1 << 2) -#define VIDEO_STATE_REC_ON (1 << 3) -#define VIDEO_STATE_PAUSE_OFF (1 << 4) -#define VIDEO_STATE_PAUSE_ON (1 << 5) -#define VIDEO_STATE_DATE_OFF (1 << 6) -#define VIDEO_STATE_DATE_ON (1 << 7) -#define VIDEO_STATE_TIME_OFF (1 << 8) -#define VIDEO_STATE_TIME_ON (1 << 9) -#define VIDEO_STATE_FRAME_OFF (1 << 10) -#define VIDEO_STATE_FRAME_ON (1 << 11) -#define VIDEO_STATE_FFWD_OFF (1 << 12) -#define VIDEO_STATE_FFWD_ON (1 << 13) -#define VIDEO_STATE_WARP_OFF (1 << 14) -#define VIDEO_STATE_WARP_ON (1 << 15) -#define VIDEO_STATE_WARP2_OFF (1 << 16) -#define VIDEO_STATE_WARP2_ON (1 << 17) -#define VIDEO_STATE_PBEND_OFF (1 << 18) -#define VIDEO_STATE_PBEND_ON (1 << 19) -#define VIDEO_STATE_1STEP_OFF (1 << 20) -#define VIDEO_STATE_1STEP_ON (1 << 21) - -#define VIDEO_PRESS_PLAY_ON (1 << 22) -#define VIDEO_PRESS_PLAY_OFF (1 << 23) -#define VIDEO_PRESS_REC_ON (1 << 24) -#define VIDEO_PRESS_REC_OFF (1 << 25) -#define VIDEO_PRESS_PAUSE_ON (1 << 26) -#define VIDEO_PRESS_PAUSE_OFF (1 << 27) -#define VIDEO_PRESS_STOP_ON (1 << 28) -#define VIDEO_PRESS_STOP_OFF (1 << 29) -#define VIDEO_PRESS_EJECT_ON (1 << 30) -#define VIDEO_PRESS_EJECT_OFF (1 << 31) - -#define VIDEO_STATE_PLAY(x) ((x) ? VIDEO_STATE_PLAY_ON : VIDEO_STATE_PLAY_OFF) -#define VIDEO_STATE_REC(x) ((x) ? VIDEO_STATE_REC_ON : VIDEO_STATE_REC_OFF) -#define VIDEO_STATE_PAUSE(x) ((x) ? VIDEO_STATE_PAUSE_ON: VIDEO_STATE_PAUSE_OFF) -#define VIDEO_STATE_DATE(x) ((x) ? VIDEO_STATE_DATE_ON : VIDEO_STATE_DATE_OFF) -#define VIDEO_STATE_TIME(x) ((x) ? VIDEO_STATE_TIME_ON : VIDEO_STATE_TIME_OFF) -#define VIDEO_STATE_FRAME(x) ((x) ? VIDEO_STATE_FRAME_ON: VIDEO_STATE_FRAME_OFF) -#define VIDEO_STATE_FFWD(x) ((x) ? VIDEO_STATE_FFWD_ON : VIDEO_STATE_FFWD_OFF) -#define VIDEO_STATE_WARP(x) ((x) ? VIDEO_STATE_WARP_ON : VIDEO_STATE_WARP_OFF) -#define VIDEO_STATE_WARP2(x) ((x) ? VIDEO_STATE_WARP2_ON: VIDEO_STATE_WARP2_OFF) -#define VIDEO_STATE_PBEND(x) ((x) ? VIDEO_STATE_PBEND_ON: VIDEO_STATE_PBEND_OFF) -#define VIDEO_STATE_1STEP(x) ((x) ? VIDEO_STATE_1STEP_ON: VIDEO_STATE_1STEP_OFF) - -#define VIDEO_PRESS_PLAY(x) ((x) ? VIDEO_PRESS_PLAY_ON : VIDEO_PRESS_PLAY_OFF) -#define VIDEO_PRESS_REC(x) ((x) ? VIDEO_PRESS_REC_ON : VIDEO_PRESS_REC_OFF) -#define VIDEO_PRESS_PAUSE(x) ((x) ? VIDEO_PRESS_PAUSE_ON: VIDEO_PRESS_PAUSE_OFF) -#define VIDEO_PRESS_STOP(x) ((x) ? VIDEO_PRESS_STOP_ON : VIDEO_PRESS_STOP_OFF) -#define VIDEO_PRESS_EJECT(x) ((x) ? VIDEO_PRESS_EJECT_ON: VIDEO_PRESS_EJECT_OFF) +#define VIDEO_STATE_PLAY_OFF (1u << 0) +#define VIDEO_STATE_PLAY_ON (1u << 1) +#define VIDEO_STATE_REC_OFF (1u << 2) +#define VIDEO_STATE_REC_ON (1u << 3) +#define VIDEO_STATE_PAUSE_OFF (1u << 4) +#define VIDEO_STATE_PAUSE_ON (1u << 5) +#define VIDEO_STATE_DATE_OFF (1u << 6) +#define VIDEO_STATE_DATE_ON (1u << 7) +#define VIDEO_STATE_TIME_OFF (1u << 8) +#define VIDEO_STATE_TIME_ON (1u << 9) +#define VIDEO_STATE_FRAME_OFF (1u << 10) +#define VIDEO_STATE_FRAME_ON (1u << 11) +#define VIDEO_STATE_FFWD_OFF (1u << 12) +#define VIDEO_STATE_FFWD_ON (1u << 13) +#define VIDEO_STATE_WARP_OFF (1u << 14) +#define VIDEO_STATE_WARP_ON (1u << 15) +#define VIDEO_STATE_WARP2_OFF (1u << 16) +#define VIDEO_STATE_WARP2_ON (1u << 17) +#define VIDEO_STATE_PBEND_OFF (1u << 18) +#define VIDEO_STATE_PBEND_ON (1u << 19) +#define VIDEO_STATE_1STEP_OFF (1u << 20) +#define VIDEO_STATE_1STEP_ON (1u << 21) + +#define VIDEO_PRESS_PLAY_ON (1u << 22) +#define VIDEO_PRESS_PLAY_OFF (1u << 23) +#define VIDEO_PRESS_REC_ON (1u << 24) +#define VIDEO_PRESS_REC_OFF (1u << 25) +#define VIDEO_PRESS_PAUSE_ON (1u << 26) +#define VIDEO_PRESS_PAUSE_OFF (1u << 27) +#define VIDEO_PRESS_STOP_ON (1u << 28) +#define VIDEO_PRESS_STOP_OFF (1u << 29) +#define VIDEO_PRESS_EJECT_ON (1u << 30) +#define VIDEO_PRESS_EJECT_OFF (1u << 31) + +#define VIDEO_STATE_PLAY(x) ((x) ? VIDEO_STATE_PLAY_ON : VIDEO_STATE_PLAY_OFF) +#define VIDEO_STATE_REC(x) ((x) ? VIDEO_STATE_REC_ON : VIDEO_STATE_REC_OFF) +#define VIDEO_STATE_PAUSE(x) ((x) ? VIDEO_STATE_PAUSE_ON: VIDEO_STATE_PAUSE_OFF) +#define VIDEO_STATE_DATE(x) ((x) ? VIDEO_STATE_DATE_ON : VIDEO_STATE_DATE_OFF) +#define VIDEO_STATE_TIME(x) ((x) ? VIDEO_STATE_TIME_ON : VIDEO_STATE_TIME_OFF) +#define VIDEO_STATE_FRAME(x) ((x) ? VIDEO_STATE_FRAME_ON: VIDEO_STATE_FRAME_OFF) +#define VIDEO_STATE_FFWD(x) ((x) ? VIDEO_STATE_FFWD_ON : VIDEO_STATE_FFWD_OFF) +#define VIDEO_STATE_WARP(x) ((x) ? VIDEO_STATE_WARP_ON : VIDEO_STATE_WARP_OFF) +#define VIDEO_STATE_WARP2(x) ((x) ? VIDEO_STATE_WARP2_ON: VIDEO_STATE_WARP2_OFF) +#define VIDEO_STATE_PBEND(x) ((x) ? VIDEO_STATE_PBEND_ON: VIDEO_STATE_PBEND_OFF) +#define VIDEO_STATE_1STEP(x) ((x) ? VIDEO_STATE_1STEP_ON: VIDEO_STATE_1STEP_OFF) + +#define VIDEO_PRESS_PLAY(x) ((x) ? VIDEO_PRESS_PLAY_ON : VIDEO_PRESS_PLAY_OFF) +#define VIDEO_PRESS_REC(x) ((x) ? VIDEO_PRESS_REC_ON : VIDEO_PRESS_REC_OFF) +#define VIDEO_PRESS_PAUSE(x) ((x) ? VIDEO_PRESS_PAUSE_ON: VIDEO_PRESS_PAUSE_OFF) +#define VIDEO_PRESS_STOP(x) ((x) ? VIDEO_PRESS_STOP_ON : VIDEO_PRESS_STOP_OFF) +#define VIDEO_PRESS_EJECT(x) ((x) ? VIDEO_PRESS_EJECT_ON: VIDEO_PRESS_EJECT_OFF) // tags to draw video display labels or symbols only // (negative values to prevent misinterpretation in DrawVideoDisplay(), where @@ -184,9 +184,9 @@ struct TapeTextInfo struct TapeInfo { - int file_version; // file format version the tape is stored with - int game_version; // game release version the tape was created with - int engine_version; // game engine version the tape was recorded with + int file_version; // file format version the tape is stored with + int game_version; // game release version the tape was created with + int engine_version; // game engine version the tape was recorded with char score_tape_basename[MAX_FILENAME_LEN + 1]; char level_identifier[MAX_FILENAME_LEN + 1]; @@ -210,6 +210,7 @@ struct TapeInfo boolean quick_resume; boolean single_step; boolean changed; + boolean solved; boolean player_participates[MAX_PLAYERS]; int num_participating_players; int centered_player_nr_next; @@ -222,6 +223,9 @@ struct TapeInfo // bits to indicate which tape properties are stored in this tape byte property_bits; + // special game_engine_flags; + boolean bd_replay; + // visible playfield size when recording this tape (for team mode) int scr_fieldx; int scr_fieldy; @@ -250,18 +254,22 @@ void DrawCompleteVideoDisplay(void); void TapeDeactivateDisplayOn(void); void TapeDeactivateDisplayOff(boolean); +void TapeSetDateFromIsoDateString(char *); void TapeSetDateFromEpochSeconds(time_t); void TapeSetDateFromNow(void); void TapeStartRecording(int); void TapeHaltRecording(void); void TapeStopRecording(void); -boolean TapeAddAction(byte *); -void TapeRecordAction(byte *); +boolean TapeAddAction(byte[MAX_TAPE_ACTIONS]); +void TapeRecordAction(byte[MAX_TAPE_ACTIONS]); void TapeTogglePause(boolean); void TapeStartPlaying(void); void TapeStopPlaying(void); +byte *TapePlayActionExt(boolean); +byte *TapePlayAction_BD(void); byte *TapePlayAction(void); +byte *TapeCorrectAction_BD(byte *); void TapeStop(void); void TapeStopGame(void); void TapeStopTape(void); @@ -272,6 +280,7 @@ void TapeQuickSave(void); void TapeQuickLoad(void); void TapeRestartGame(void); void TapeReplayAndPauseBeforeEnd(void); +boolean TapeIsPlaying_ReplayBD(void); boolean hasSolutionTape(void); boolean InsertSolutionTape(void);