X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=9175e5c294776724e8fcc97619961207f48efdf3;hb=020210607f2ba71676882d52d0413f4128858b4a;hp=7a7484549d3e30956c66e9cb3f92f8c668ad72b0;hpb=4f767d54c7ac468e9a42e22caf716111be1ceba9;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 7a748454..9175e5c2 100644 --- a/src/main.h +++ b/src/main.h @@ -17,9 +17,9 @@ #include #include #include -#include #include #include +#include #ifndef MSDOS #define XK_MISCELLANY @@ -48,8 +48,8 @@ typedef unsigned char boolean; typedef unsigned char byte; #ifndef FALSE -#define FALSE 0 -#define TRUE (!FALSE) +#define FALSE 0 +#define TRUE (!FALSE) #endif #define WIN_XSIZE 672 @@ -122,6 +122,7 @@ typedef unsigned char byte; #define EP_BIT_MAMPF3 (1<<23) #define EP_BIT_PUSHABLE (1<<24) #define EP_BIT_PLAYER (1<<25) +#define EP_BIT_HAS_CONTENT (1<<26) #define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID) @@ -149,6 +150,7 @@ typedef unsigned char byte; #define IS_MAMPF3(e) (Elementeigenschaften[e] & EP_BIT_MAMPF3) #define IS_PUSHABLE(e) (Elementeigenschaften[e] & EP_BIT_PUSHABLE) #define ELEM_IS_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_PLAYER) +#define HAS_CONTENT(e) (Elementeigenschaften[e] & EP_BIT_HAS_CONTENT) #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) @@ -204,6 +206,7 @@ typedef unsigned char byte; #define GAME_FRAME_DELAY 20 /* frame delay in milliseconds */ #define FFWD_FRAME_DELAY 10 /* 200% speed for fast forward */ #define FRAMES_PER_SECOND (1000 / GAME_FRAME_DELAY) +#define GADGET_FRAME_DELAY 150 /* delay between gadget actions */ struct HiScore { @@ -300,15 +303,15 @@ struct PlayerInfo boolean gone, LevelSolved, GameOver; boolean snapped; - long move_delay; + unsigned long move_delay; int last_move_dir; - long push_delay; - int push_delay_value; + unsigned long push_delay; + unsigned long push_delay_value; int frame_reset_delay; - long actual_frame_counter; + unsigned long actual_frame_counter; int score; int gems_still_needed; @@ -328,7 +331,7 @@ struct LevelInfo int edelsteine; char name[MAX_LEVNAMLEN]; int score[LEVEL_SCORE_ELEMENTS]; - int mampfer_inhalt[4][3][3]; + int mampfer_inhalt[8][3][3]; int tempo_amoebe; int dauer_sieb; int dauer_ablenk; @@ -345,7 +348,7 @@ struct LevelDirInfo boolean readonly; }; -struct RecordingInfo +struct TapeInfo { int level_nr; unsigned long random_seed; @@ -358,6 +361,7 @@ struct RecordingInfo boolean recording, playing, pausing; boolean fast_forward; boolean changed; + boolean player_participates[MAX_PLAYERS]; struct { byte action[MAX_PLAYERS]; @@ -389,6 +393,7 @@ extern char *joystick_device_name[]; extern char *program_name; extern int game_status; +extern boolean level_editor_test_game; extern boolean network_playing; extern int button_status; extern boolean motion_status; @@ -429,16 +434,15 @@ extern int BX1,BY1, BX2,BY2; extern int ZX,ZY, ExitX,ExitY; extern int AllPlayersGone; extern int FrameCounter, TimeFrames, TimeLeft; -extern int MampferNr, SiebAktiv; +extern int MampferMax, MampferNr, SiebAktiv; extern boolean network_player_action_received; -extern int TestPlayer; extern struct LevelDirInfo leveldir[]; extern struct LevelInfo level; extern struct PlayerInfo stored_player[], *local_player; extern struct HiScore highscore[]; -extern struct RecordingInfo tape; +extern struct TapeInfo tape; extern struct SoundInfo Sound[]; extern struct JoystickInfo joystick[]; extern struct OptionInfo options; @@ -460,6 +464,8 @@ extern int num_bg_loops; #define DY 60 #define VX DX #define VY 400 +#define EX DX +#define EY (VY - 44) #define TILEX 32 #define TILEY 32 #define MINI_TILEX (TILEX/2) @@ -476,6 +482,8 @@ extern int num_bg_loops; #define DYSIZE 280 #define VXSIZE DXSIZE #define VYSIZE 100 +#define EXSIZE DXSIZE +#define EYSIZE (VXSIZE + 44) #define FULL_SXSIZE (2+SXSIZE+2) #define FULL_SYSIZE (2+SYSIZE+2) #define MICROLEV_XPOS (SX+4*32+16) @@ -1035,16 +1043,17 @@ extern int num_bg_loops; #define FC_SPECIAL2 5 /* values for game_status */ -#define MAINMENU 0 -#define PLAYING 1 -#define LEVELED 2 -#define HELPSCREEN 3 -#define CHOOSELEVEL 4 -#define TYPENAME 5 -#define HALLOFFAME 6 -#define SETUP 7 -#define SETUPINPUT 8 -#define EXITGAME 9 +#define EXITGAME 0 +#define MAINMENU 1 +#define PLAYING 2 +#define LEVELED 3 +#define HELPSCREEN 4 +#define CHOOSELEVEL 5 +#define TYPENAME 6 +#define HALLOFFAME 7 +#define SETUP 8 +#define SETUPINPUT 9 +#define CALIBRATION 10 #ifndef GAME_DIR #define GAME_DIR "." @@ -1058,13 +1067,13 @@ extern int num_bg_loops; #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" -#define VERSION_STRING "1.2 preview 1" +#define VERSION_STRING "1.2.0" #define GAMETITLE_STRING "Rocks'n'Diamonds" #define WINDOWTITLE_STRING GAMETITLE_STRING " " VERSION_STRING #define COPYRIGHT_STRING "Copyright ^1995-98 by Holger Schemel" /* default name for empty highscore entry */ -#define EMPTY_ALIAS "NO_NAME" +#define EMPTY_PLAYER_NAME "no name" /* values for button_status */ #define MB_NOT_PRESSED FALSE @@ -1083,17 +1092,18 @@ extern int num_bg_loops; #endif /* values for redraw_mask */ -#define REDRAW_ALL (1L<<0) -#define REDRAW_FIELD (1L<<1) -#define REDRAW_TILES (1L<<2) -#define REDRAW_DOOR_1 (1L<<3) -#define REDRAW_VIDEO_1 (1L<<4) -#define REDRAW_VIDEO_2 (1L<<5) -#define REDRAW_VIDEO_3 (1L<<6) -#define REDRAW_MICROLEV (1L<<7) -#define REDRAW_FROM_BACKBUFFER (1L<<8) +#define REDRAW_ALL (1L << 0) +#define REDRAW_FIELD (1L << 1) +#define REDRAW_TILES (1L << 2) +#define REDRAW_DOOR_1 (1L << 3) +#define REDRAW_VIDEO_1 (1L << 4) +#define REDRAW_VIDEO_2 (1L << 5) +#define REDRAW_VIDEO_3 (1L << 6) +#define REDRAW_MICROLEV (1L << 7) +#define REDRAW_FROM_BACKBUFFER (1L << 8) #define REDRAW_DOOR_2 (REDRAW_VIDEO_1 | REDRAW_VIDEO_2 | REDRAW_VIDEO_3) -#define REDRAW_DOORS (REDRAW_DOOR_1 | REDRAW_DOOR_2) +#define REDRAW_DOOR_3 (1L << 9) +#define REDRAW_DOORS (REDRAW_DOOR_1 | REDRAW_DOOR_2 | REDRAW_DOOR_3) #define REDRAW_MAIN (REDRAW_FIELD | REDRAW_TILES | REDRAW_MICROLEV) #define REDRAWTILES_THRESHOLD SCR_FIELDX*SCR_FIELDY/2 @@ -1111,6 +1121,8 @@ extern int num_bg_loops; #define DOOR_GFX_PAGEX4 (3 * DOOR_GFX_PAGESIZE) #define DOOR_GFX_PAGEX5 (4 * DOOR_GFX_PAGESIZE) #define DOOR_GFX_PAGEX6 (5 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX7 (6 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX8 (7 * DOOR_GFX_PAGESIZE) #define DOOR_GFX_PAGEY1 0 #define DOOR_GFX_PAGEY2 DYSIZE