X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.h;h=5243f26845d1f7671b9419c61a1d53ce1eb3f24c;hp=aa1b58263240562bcfdf58bafb64d6b05c578c2f;hb=4a8368abd71c718621838773eed914b5bbd4e1d8;hpb=823bddb0d9cc63ddda17a2cd20266aa3b82bde38 diff --git a/src/tape.h b/src/tape.h index aa1b5826..5243f268 100644 --- a/src/tape.h +++ b/src/tape.h @@ -1,34 +1,168 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-98 Artsoft Entertainment * -* Holger Schemel * -* Oststrasse 11a * -* 33604 Bielefeld * -* phone: ++49 +521 290471 * -* email: aeglos@valinor.owl.de * +* (c) 1995-2006 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* tape.c * +* tape.h * ***********************************************************/ #ifndef TAPE_H #define TAPE_H -#include "main.h" -#define PAUSE_SECONDS_BEFORE_DEATH 3 +/* values for TapeTogglePause() */ +#define TAPE_TOGGLE_MANUAL TRUE +#define TAPE_TOGGLE_AUTOMATIC FALSE -void TapeStartRecording(void); +/* values for tape properties */ +#define MAX_TAPE_LEN (1000 * FRAMES_PER_SECOND) /* max.time x fps */ + +/* 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 + +/* 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_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) + +/* tags to draw video display labels or symbols only */ +/* (negative values to prevent misinterpretation in DrawVideoDisplay(), where + the variable "value" is also used for tape length -- better fix this) */ +#define VIDEO_DISPLAY_DEFAULT 0 +#define VIDEO_DISPLAY_LABEL_ONLY -1 +#define VIDEO_DISPLAY_SYMBOL_ONLY -2 + + +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 */ + + 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 delay_played; + boolean pause_before_death; + boolean recording, playing, pausing; + boolean fast_forward; + boolean warp_forward; + boolean deactivate_display; + boolean auto_play; + boolean auto_play_level_solved; + boolean quick_resume; + boolean single_step; + boolean changed; + boolean player_participates[MAX_PLAYERS]; + int num_participating_players; + int centered_player_nr_next; + boolean set_centered_player; + + struct + { + byte action[MAX_PLAYERS]; + byte delay; + } pos[MAX_TAPE_LEN]; + + boolean no_valid_file; /* set when tape file missing or invalid */ +}; + + +void DrawVideoDisplay(unsigned long, unsigned long); +void DrawCompleteVideoDisplay(void); + +void TapeDeactivateDisplayOn(); +void TapeDeactivateDisplayOff(boolean); + +void TapeSetDateFromEpochSeconds(time_t); +void TapeSetDateFromNow(); + +void TapeStartRecording(long); +void TapeHaltRecording(void); void TapeStopRecording(void); -void TapeRecordAction(int *); -void TapeRecordDelay(void); -void TapeTogglePause(void); +void TapeRecordAction(byte *); +void TapeTogglePause(boolean); void TapeStartPlaying(void); void TapeStopPlaying(void); -int *TapePlayAction(void); -BOOL TapePlayDelay(void); +byte *TapePlayAction(void); void TapeStop(void); void TapeErase(void); unsigned int GetTapeLength(void); +void TapeQuickSave(void); +void TapeQuickLoad(void); +void InsertSolutionTape(void); + +void AutoPlayTape(void); + +void CreateTapeButtons(); +void FreeTapeButtons(); +void MapTapeEjectButton(); +void MapTapeWarpButton(); +void MapTapeButtons(); +void UnmapTapeButtons(); #endif