X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=fad880a44de800221ef9bad3ca01a5ac155dd551;hb=bb33b871657d1af6beda881e33b536512815aa9b;hp=8e5a427ce45b3014710ea987c46d4180ce8385c1;hpb=0d2143d53f76e2780260996fae2b9f3ce4f29913;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 8e5a427c..fad880a4 100644 --- a/src/main.h +++ b/src/main.h @@ -124,6 +124,9 @@ typedef unsigned char byte; #define EP_BIT_HAS_CONTENT (1 << 26) #define EP_BIT_EATABLE (1 << 27) #define EP_BIT_SP_ELEMENT (1 << 28) +#define EP_BIT_QUICK_GATE (1 << 29) +#define EP_BIT_OVER_PLAYER (1 << 30) +#define EP_BIT_ACTIVE_BOMB (1 << 31) #define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID) @@ -154,6 +157,9 @@ typedef unsigned char byte; #define HAS_CONTENT(e) (Elementeigenschaften[e] & EP_BIT_HAS_CONTENT) #define IS_EATABLE(e) (Elementeigenschaften[e] & EP_BIT_EATABLE) #define IS_SP_ELEMENT(e) (Elementeigenschaften[e] & EP_BIT_SP_ELEMENT) +#define IS_QUICK_GATE(e) (Elementeigenschaften[e] & EP_BIT_QUICK_GATE) +#define IS_OVER_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_OVER_PLAYER) +#define IS_ACTIVE_BOMB(e) (Elementeigenschaften[e] & EP_BIT_ACTIVE_BOMB) #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) @@ -195,7 +201,7 @@ typedef unsigned char byte; #define NUM_PIXMAPS 10 /* boundaries of arrays etc. */ -#define MAX_NAMELEN (10+1) +#define MAX_PLAYER_NAME_LEN 10 #define MAX_LEVEL_NAME_LEN 32 #define MAX_LEVEL_AUTHOR_LEN 32 #define MAX_TAPELEN (1000 * 50) /* max. time * framerate */ @@ -204,6 +210,11 @@ typedef unsigned char byte; #define MAX_ELEMENTS 512 #define MAX_NUM_AMOEBA 100 +/* values for elements with content */ +#define MIN_ELEMENT_CONTENTS 1 +#define STD_ELEMENT_CONTENTS 4 +#define MAX_ELEMENT_CONTENTS 8 + #define LEVEL_SCORE_ELEMENTS 16 /* level elements with score */ /* fundamental game speed values */ @@ -216,7 +227,7 @@ typedef unsigned char byte; struct HiScore { - char Name[MAX_NAMELEN]; + char Name[MAX_PLAYER_NAME_LEN + 1]; int Score; }; @@ -225,7 +236,8 @@ struct OptionInfo char *display_name; char *server_host; int server_port; - char *base_directory; + char *ro_base_directory; + char *rw_base_directory; char *level_directory; boolean serveronly; boolean network; @@ -298,6 +310,8 @@ struct PlayerInfo byte effective_action; /* action aknowledged from network server or summarized over all configured input devices when in single player mode */ + byte programmed_action; /* action forced by game itself (like moving + through doors); overrides other actions */ int joystick_fd; /* file descriptor of player's joystick */ @@ -306,10 +320,12 @@ struct PlayerInfo int Frame; boolean Pushing; - boolean gone, LevelSolved, GameOver; + boolean LevelSolved, GameOver; boolean snapped; unsigned long move_delay; + int move_delay_value; + int last_move_dir; unsigned long push_delay; @@ -334,16 +350,18 @@ struct LevelInfo int fieldx; int fieldy; int time; - int edelsteine; + int gems_needed; char name[MAX_LEVEL_NAME_LEN + 1]; char author[MAX_LEVEL_AUTHOR_LEN + 1]; int score[LEVEL_SCORE_ELEMENTS]; - int mampfer_inhalt[8][3][3]; - int tempo_amoebe; - int dauer_sieb; - int dauer_ablenk; - int amoebe_inhalt; + int yam_content[MAX_ELEMENT_CONTENTS][3][3]; + int num_yam_contents; + int amoeba_speed; + int amoeba_content; + int time_magic_wall; + int time_wheel; boolean double_speed; + boolean gravity; }; struct LevelDirInfo @@ -381,6 +399,18 @@ struct TapeInfo } pos[MAX_TAPELEN]; }; +struct GameInfo +{ + int emulation; + int yam_content_nr; + boolean magic_wall_active; + int magic_wall_time_left; +}; + +struct GlobalInfo +{ +}; + extern Display *display; extern Visual *visual; extern int screen; @@ -442,19 +472,15 @@ extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos; extern int BorderElement; extern int GameFrameDelay; extern int FfwdFrameDelay; -extern int MoveSpeed; extern int BX1,BY1, BX2,BY2; extern int SBX_Left, SBX_Right; extern int SBY_Upper, SBY_Lower; extern int ZX,ZY, ExitX,ExitY; extern int AllPlayersGone; extern int FrameCounter, TimeFrames, TimePlayed, TimeLeft; -extern int MampferMax, MampferNr; extern boolean SiebAktiv; extern int SiebCount; -extern int game_emulation; - extern boolean network_player_action_received; extern struct LevelDirInfo leveldir[]; @@ -468,6 +494,8 @@ extern struct OptionInfo options; extern struct SetupInfo setup; extern struct SetupFileList *setup_list; extern struct SetupFileList *level_setup_list; +extern struct GameInfo game; +extern struct GlobalInfo global; extern char *sound_name[]; extern int background_loop[]; @@ -519,6 +547,8 @@ extern char *element_info[]; #define FONT3_YSIZE 14 #define FONT4_XSIZE 16 #define FONT4_YSIZE 16 +#define FONT5_XSIZE 10 +#define FONT5_YSIZE 14 #define GFX_STARTX SX #define GFX_STARTY SY @@ -531,12 +561,12 @@ extern char *element_info[]; #define MICRO_GFX_PER_LINE 128 #define HEROES_PER_LINE 16 #define MINI_MORE_STARTX 0 -#define MINI_MORE_STARTY 224 +#define MINI_MORE_STARTY 352 #define MICRO_MORE_STARTX 0 -#define MICRO_MORE_STARTY 336 +#define MICRO_MORE_STARTY 448 #define MORE_PER_LINE 16 #define MINI_MORE_PER_LINE 16 -#define MICRO_MORE_PER_LINE 16 +#define MICRO_MORE_PER_LINE 64 #define FONT_CHARS_PER_LINE 16 #define FONT_LINES_PER_FONT 4 @@ -573,7 +603,7 @@ extern char *element_info[]; #define EL_KOKOSNUSS 25 #define EL_LIFE 26 #define EL_LIFE_ASYNC 27 -#define EL_DYNAMIT 28 +#define EL_DYNAMITE_ACTIVE 28 #define EL_BADEWANNE 29 #define EL_ABLENK_AUS 30 #define EL_ABLENK_EIN 31 @@ -589,7 +619,7 @@ extern char *element_info[]; #define EL_PFORTE2X 41 #define EL_PFORTE3X 42 #define EL_PFORTE4X 43 -#define EL_DYNAMIT_AUS 44 +#define EL_DYNAMITE_INACTIVE 44 #define EL_PACMAN 45 #define EL_UNSICHTBAR 46 #define EL_BIRNE_AUS 47 @@ -608,7 +638,9 @@ extern char *element_info[]; #define EL_MAMPFER2 60 #define EL_SIEB2_INAKTIV 61 #define EL_INVISIBLE_STEEL 62 -#define EL_DYNABOMB 63 + +#define EL_UNUSED_63 63 + #define EL_DYNABOMB_NR 64 #define EL_DYNABOMB_SZ 65 #define EL_DYNABOMB_XL 66 @@ -677,7 +709,7 @@ extern char *element_info[]; #define EL_SCHWEIN 117 #define EL_DRACHE 118 -#define EL_UNUSED_119 119 +#define EL_EM_KEY_1_FILE 119 #define EL_CHAR_START 120 #define EL_CHAR_ASCII0 (EL_CHAR_START-32) @@ -722,13 +754,14 @@ extern char *element_info[]; #define EL_MAUER_Y 201 #define EL_MAUER_XY 202 -#define EL_UNUSED_203 203 -#define EL_UNUSED_204 204 -#define EL_UNUSED_205 205 -#define EL_UNUSED_206 206 -#define EL_UNUSED_207 207 -#define EL_UNUSED_208 208 -#define EL_UNUSED_209 209 +#define EL_EM_GATE_1 203 +#define EL_EM_GATE_2 204 +#define EL_EM_GATE_3 205 +#define EL_EM_GATE_4 206 + +#define EL_EM_KEY_2_FILE 207 +#define EL_EM_KEY_3_FILE 208 +#define EL_EM_KEY_4_FILE 209 #define EL_SP_START 210 #define EL_SP_EMPTY (EL_SP_START + 0) @@ -773,10 +806,11 @@ extern char *element_info[]; #define EL_SP_CHIP_LOWER (EL_SP_START + 39) #define EL_SP_END (EL_SP_START + 39) -#define EL_UNUSED_250 250 -#define EL_UNUSED_251 251 -#define EL_UNUSED_252 252 -#define EL_UNUSED_253 253 +#define EL_EM_GATE_1X 250 +#define EL_EM_GATE_2X 251 +#define EL_EM_GATE_3X 252 +#define EL_EM_GATE_4X 253 + #define EL_UNUSED_254 254 #define EL_UNUSED_255 255 @@ -790,6 +824,14 @@ extern char *element_info[]; #define EL_AUSGANG_ACT 306 #define EL_SP_TERMINAL_ACTIVE 307 #define EL_SP_BUG_ACTIVE 308 +#define EL_EM_KEY_1 309 +#define EL_EM_KEY_2 310 +#define EL_EM_KEY_3 311 +#define EL_EM_KEY_4 312 +#define EL_DYNABOMB_ACTIVE_1 313 +#define EL_DYNABOMB_ACTIVE_2 314 +#define EL_DYNABOMB_ACTIVE_3 315 +#define EL_DYNABOMB_ACTIVE_4 316 /* "unreal" (and therefore not drawable) runtime elements */ #define EL_BLOCKED 400 @@ -1055,7 +1097,9 @@ extern char *element_info[]; /* graphics from "RocksMore" */ #define GFX_SP_EMPTY (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 0) +/* #define GFX_SP_ZONK (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 1) +*/ #define GFX_SP_BASE (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 2) #define GFX_SP_MURPHY (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 3) #define GFX_SP_INFOTRON (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 4) @@ -1097,6 +1141,20 @@ extern char *element_info[]; #define GFX_INVISIBLE_STEEL (GFX_START_ROCKSMORE + 5 * MORE_PER_LINE + 3) #define GFX_UNSICHTBAR (GFX_START_ROCKSMORE + 5 * MORE_PER_LINE + 7) +#define GFX_SP_ZONK (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 0) + +#define GFX_EM_KEY_1 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 4) +#define GFX_EM_KEY_2 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 5) +#define GFX_EM_KEY_3 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 6) +#define GFX_EM_KEY_4 (GFX_START_ROCKSMORE + 6 * MORE_PER_LINE + 7) +#define GFX_EM_GATE_1 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 0) +#define GFX_EM_GATE_2 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 1) +#define GFX_EM_GATE_3 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 2) +#define GFX_EM_GATE_4 (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 3) +#define GFX_EM_GATE_1X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 4) +#define GFX_EM_GATE_2X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 5) +#define GFX_EM_GATE_3X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 6) +#define GFX_EM_GATE_4X (GFX_START_ROCKSMORE + 7 * MORE_PER_LINE + 7) #define GFX_MURPHY_GO_LEFT (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 8) #define GFX_MURPHY_ANY_LEFT (GFX_START_ROCKSMORE + 0 * MORE_PER_LINE + 9) @@ -1216,8 +1274,9 @@ extern char *element_info[]; #define SND_SP_BOOOM 58 #define SND_SP_EXIT 59 #define SND_EMPTY 60 +#define SND_GATE 61 -#define NUM_SOUNDS 61 +#define NUM_SOUNDS 62 /* default input keys */ #define KEY_UNDEFINDED XK_VoidSymbol @@ -1247,6 +1306,7 @@ extern char *element_info[]; #define FC_YELLOW 3 #define FC_SPECIAL1 4 #define FC_SPECIAL2 5 +#define FC_SPECIAL3 6 /* values for game_status */ #define EXITGAME 0 @@ -1261,11 +1321,16 @@ extern char *element_info[]; #define SETUPINPUT 9 #define CALIBRATION 10 -#ifndef GAME_DIR -#define GAME_DIR "." +#ifndef RO_GAME_DIR +#define RO_GAME_DIR "." +#endif + +#ifndef RW_GAME_DIR +#define RW_GAME_DIR "." #endif -#define BASE_PATH GAME_DIR +#define RO_BASE_PATH RO_GAME_DIR +#define RW_BASE_PATH RW_GAME_DIR #define GRAPHICS_DIRECTORY "graphics" #define SOUNDS_DIRECTORY "sounds" @@ -1273,7 +1338,7 @@ extern char *element_info[]; #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" -#define PROGRAM_VERSION_STRING "1.2.1" +#define PROGRAM_VERSION_STRING "1.3.0" #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" #define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_VERSION_STRING