X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.h;h=bc80f440b3ec191dd6f911caf1d1e01674fedd27;hp=6a5107cb5a849fecd6d4c55ffab3804fd4dc0495;hb=47da774c66f9325f9d27cddb5a697514154e2de9;hpb=61c3da024802ecc0268bab42d7499fc0346e4fd3 diff --git a/src/tape.h b/src/tape.h index 6a5107cb..bc80f440 100644 --- a/src/tape.h +++ b/src/tape.h @@ -1,23 +1,22 @@ -/*********************************************************** -* 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 /* values for TapeTogglePause() */ -#define TAPE_TOGGLE_MANUAL TRUE -#define TAPE_TOGGLE_AUTOMATIC FALSE +#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 (1000 * FRAMES_PER_SECOND) /* max.time x fps */ @@ -39,51 +38,55 @@ /* values for video tape control */ #define VIDEO_STATE_PLAY_OFF (1 << 0) #define VIDEO_STATE_PLAY_ON (1 << 1) -#define VIDEO_STATE_PLAY (VIDEO_STATE_PLAY_OFF | VIDEO_STATE_PLAY_ON) #define VIDEO_STATE_REC_OFF (1 << 2) #define VIDEO_STATE_REC_ON (1 << 3) -#define VIDEO_STATE_REC (VIDEO_STATE_REC_OFF | VIDEO_STATE_REC_ON) #define VIDEO_STATE_PAUSE_OFF (1 << 4) #define VIDEO_STATE_PAUSE_ON (1 << 5) -#define VIDEO_STATE_PAUSE (VIDEO_STATE_PAUSE_OFF | VIDEO_STATE_PAUSE_ON) #define VIDEO_STATE_DATE_OFF (1 << 6) #define VIDEO_STATE_DATE_ON (1 << 7) -#define VIDEO_STATE_DATE (VIDEO_STATE_DATE_OFF | VIDEO_STATE_DATE_ON) #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_FFWD_OFF (1 << 10) -#define VIDEO_STATE_FFWD_ON (1 << 11) -#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 (VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PBEND_ON) +#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_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 (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 (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 (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 (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 (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 (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 (VIDEO_PRESS_EJECT_OFF | VIDEO_PRESS_EJECT_ON) +#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) /* tags to draw video display labels or symbols only */ /* (negative values to prevent misinterpretation in DrawVideoDisplay(), where @@ -95,47 +98,58 @@ struct TapeButtonInfo { - struct Rect eject; - struct Rect stop; - struct Rect pause; - struct Rect record; - struct Rect play; + struct XY eject; + struct XY stop; + struct XY pause; + struct XY record; + struct XY play; }; struct TapeSymbolInfo { - struct Rect eject; - struct Rect stop; - struct Rect pause; - struct Rect record; - struct Rect play; - struct Rect fast_forward; - struct Rect warp_forward; - struct Rect warp_forward_blind; - struct Rect pause_before_end; - struct Rect single_step; + 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 Rect eject; - struct Rect stop; - struct Rect pause; - struct Rect record; - struct Rect play; - struct Rect fast_forward; - struct Rect warp_forward; - struct Rect warp_forward_blind; - struct Rect pause_before_end; - struct Rect single_step; - struct Rect date; - struct Rect time; + 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 @@ -150,9 +164,10 @@ struct TapeInfo 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 pause_before_end; boolean recording, playing, pausing; boolean fast_forward; boolean warp_forward; @@ -178,6 +193,8 @@ struct TapeInfo 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 */ }; @@ -201,7 +218,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); @@ -214,6 +232,8 @@ void MapTapeEjectButton(); void MapTapeWarpButton(); void MapTapeButtons(); void UnmapTapeButtons(); +void RedrawTapeButtons(); +void RedrawOrRemapTapeButtons(); void HandleTapeButtonKeys(Key);