X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.h;h=e77cd86c99204380aac547261b82fd2fa2def85a;hp=fe636495df8b07380d58bb0fe4ce6c775ddb3023;hb=f78f30b84a0345ea31b30c5bd95e338c9d9ebd4b;hpb=90c3a49422dd88de77ffc7b8dd1d4f1d73d0d9a3 diff --git a/src/tape.h b/src/tape.h index fe636495..e77cd86c 100644 --- a/src/tape.h +++ b/src/tape.h @@ -1,15 +1,13 @@ -/*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * -*----------------------------------------------------------* -* (c) 1995-2006 Artsoft Entertainment * -* Holger Schemel * -* Detmolder Strasse 189 * -* 33604 Bielefeld * -* Germany * -* e-mail: info@artsoft.org * -*----------------------------------------------------------* -* tape.h * -***********************************************************/ +// ============================================================================ +// Rocks'n'Diamonds - McDuffin Strikes Back! +// ---------------------------------------------------------------------------- +// (c) 1995-2014 by Artsoft Entertainment +// Holger Schemel +// info@artsoft.org +// http://www.artsoft.org/ +// ---------------------------------------------------------------------------- +// tape.h +// ============================================================================ #ifndef TAPE_H #define TAPE_H @@ -52,37 +50,40 @@ #define VIDEO_STATE_TIME_OFF (1 << 8) #define VIDEO_STATE_TIME_ON (1 << 9) #define VIDEO_STATE_TIME (VIDEO_STATE_TIME_OFF | VIDEO_STATE_TIME_ON) +#define VIDEO_STATE_FRAME_OFF (1 << 10) +#define VIDEO_STATE_FRAME_ON (1 << 11) +#define VIDEO_STATE_FRAME (VIDEO_STATE_FRAME_OFF | VIDEO_STATE_FRAME_ON) -#define VIDEO_STATE_FFWD_OFF (1 << 10) -#define VIDEO_STATE_FFWD_ON (1 << 11) +#define VIDEO_STATE_FFWD_OFF (1 << 12) +#define VIDEO_STATE_FFWD_ON (1 << 13) #define VIDEO_STATE_FFWD (VIDEO_STATE_FFWD_OFF | VIDEO_STATE_FFWD_ON) -#define VIDEO_STATE_PBEND_OFF (1 << 12) -#define VIDEO_STATE_PBEND_ON (1 << 13) +#define VIDEO_STATE_PBEND_OFF (1 << 14) +#define VIDEO_STATE_PBEND_ON (1 << 15) #define VIDEO_STATE_PBEND (VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PBEND_ON) -#define VIDEO_STATE_WARP_OFF (1 << 14) -#define VIDEO_STATE_WARP_ON (1 << 15) +#define VIDEO_STATE_WARP_OFF (1 << 16) +#define VIDEO_STATE_WARP_ON (1 << 17) #define VIDEO_STATE_WARP (VIDEO_STATE_WARP_OFF | VIDEO_STATE_WARP_ON) -#define VIDEO_STATE_WARP2_OFF (1 << 16) -#define VIDEO_STATE_WARP2_ON (1 << 17) +#define VIDEO_STATE_WARP2_OFF (1 << 18) +#define VIDEO_STATE_WARP2_ON (1 << 19) #define VIDEO_STATE_WARP2 (VIDEO_STATE_WARP_OFF | VIDEO_STATE_WARP_ON) -#define VIDEO_STATE_1STEP_OFF (1 << 18) -#define VIDEO_STATE_1STEP_ON (1 << 19) +#define VIDEO_STATE_1STEP_OFF (1 << 20) +#define VIDEO_STATE_1STEP_ON (1 << 21) #define VIDEO_STATE_1STEP (VIDEO_STATE_1STEP_OFF | VIDEO_STATE_1STEP_ON) -#define VIDEO_PRESS_PLAY_ON (1 << 20) -#define VIDEO_PRESS_PLAY_OFF (1 << 21) +#define VIDEO_PRESS_PLAY_ON (1 << 22) +#define VIDEO_PRESS_PLAY_OFF (1 << 23) #define VIDEO_PRESS_PLAY (VIDEO_PRESS_PLAY_OFF | VIDEO_PRESS_PLAY_ON) -#define VIDEO_PRESS_REC_ON (1 << 22) -#define VIDEO_PRESS_REC_OFF (1 << 23) +#define VIDEO_PRESS_REC_ON (1 << 24) +#define VIDEO_PRESS_REC_OFF (1 << 25) #define VIDEO_PRESS_REC (VIDEO_PRESS_REC_OFF | VIDEO_PRESS_REC_ON) -#define VIDEO_PRESS_PAUSE_ON (1 << 24) -#define VIDEO_PRESS_PAUSE_OFF (1 << 25) +#define VIDEO_PRESS_PAUSE_ON (1 << 26) +#define VIDEO_PRESS_PAUSE_OFF (1 << 27) #define VIDEO_PRESS_PAUSE (VIDEO_PRESS_PAUSE_OFF | VIDEO_PRESS_PAUSE_ON) -#define VIDEO_PRESS_STOP_ON (1 << 26) -#define VIDEO_PRESS_STOP_OFF (1 << 27) +#define VIDEO_PRESS_STOP_ON (1 << 28) +#define VIDEO_PRESS_STOP_OFF (1 << 29) #define VIDEO_PRESS_STOP (VIDEO_PRESS_STOP_OFF | VIDEO_PRESS_STOP_ON) -#define VIDEO_PRESS_EJECT_ON (1 << 28) -#define VIDEO_PRESS_EJECT_OFF (1 << 29) +#define VIDEO_PRESS_EJECT_ON (1 << 30) +#define VIDEO_PRESS_EJECT_OFF (1 << 31) #define VIDEO_PRESS_EJECT (VIDEO_PRESS_EJECT_OFF | VIDEO_PRESS_EJECT_ON) /* tags to draw video display labels or symbols only */ @@ -93,6 +94,62 @@ #define VIDEO_DISPLAY_SYMBOL_ONLY -2 +struct TapeButtonInfo +{ + struct XY eject; + struct XY stop; + struct XY pause; + struct XY record; + struct XY play; +}; + +struct TapeSymbolInfo +{ + struct XY eject; + struct XY stop; + struct XY pause; + struct XY record; + struct XY play; + struct XY fast_forward; + struct XY warp_forward; + struct XY warp_forward_blind; + struct XY pause_before_end; + struct XY single_step; +}; + +struct TapeLabelInfo +{ + struct XY eject; + struct XY stop; + struct XY pause; + struct XY record; + struct XY play; + struct XY fast_forward; + struct XY warp_forward; + struct XY warp_forward_blind; + struct XY pause_before_end; + struct XY single_step; + struct XY date; + struct XY time; +}; + +struct TapeTextInfo +{ + struct TextPosInfo date; + struct TextPosInfo date_yyyy; + struct TextPosInfo date_yy; + struct TextPosInfo date_mon; + struct TextPosInfo date_mm; + struct TextPosInfo date_dd; + + struct TextPosInfo time; + struct TextPosInfo time_hh; + struct TextPosInfo time_mm; + struct TextPosInfo time_ss; + + struct TextPosInfo frame; +}; + struct TapeInfo { int file_version; /* file format version the tape is stored with */ @@ -101,11 +158,12 @@ struct TapeInfo char *level_identifier; int level_nr; - unsigned long random_seed; - unsigned long date; - unsigned long counter; - unsigned long length; - unsigned long length_seconds; + unsigned int random_seed; + unsigned int date; + unsigned int counter; + unsigned int length; + unsigned int length_frames; + unsigned int length_seconds; unsigned int delay_played; boolean pause_before_death; boolean recording, playing, pausing; @@ -128,17 +186,27 @@ struct TapeInfo byte delay; } pos[MAX_TAPE_LEN]; + struct TapeButtonInfo button; + struct TapeSymbolInfo symbol; + struct TapeLabelInfo label; + struct TapeTextInfo text; + + boolean show_game_buttons; /* show game buttons in tape viewport */ + boolean no_valid_file; /* set when tape file missing or invalid */ }; -void DrawVideoDisplay(unsigned long, unsigned long); +void DrawVideoDisplay(unsigned int, unsigned int); void DrawCompleteVideoDisplay(void); void TapeDeactivateDisplayOn(); void TapeDeactivateDisplayOff(boolean); -void TapeStartRecording(long); +void TapeSetDateFromEpochSeconds(time_t); +void TapeSetDateFromNow(); + +void TapeStartRecording(int); void TapeHaltRecording(void); void TapeStopRecording(void); void TapeRecordAction(byte *); @@ -148,7 +216,8 @@ void TapeStopPlaying(void); byte *TapePlayAction(void); void TapeStop(void); void TapeErase(void); -unsigned int GetTapeLength(void); +unsigned int GetTapeLengthFrames(void); +unsigned int GetTapeLengthSeconds(void); void TapeQuickSave(void); void TapeQuickLoad(void); void InsertSolutionTape(void); @@ -162,4 +231,6 @@ void MapTapeWarpButton(); void MapTapeButtons(); void UnmapTapeButtons(); +void HandleTapeButtonKeys(Key); + #endif