X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=a625102cc706ac76f1b88198b4b14af8dd878bba;hb=0c27626bae90cb1eeea4939de0130a49b9aac507;hp=ec429bfbffdc15bd954b50b79b1aa09aec8ac4ee;hpb=84c20a81b20d9a4017f7691dda78fc3b6f2dedf5;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index ec429bfb..a625102c 100644 --- a/src/main.h +++ b/src/main.h @@ -126,6 +126,7 @@ typedef unsigned char byte; #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) @@ -158,6 +159,7 @@ typedef unsigned char byte; #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])) @@ -208,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 */ @@ -229,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; @@ -305,12 +313,6 @@ struct PlayerInfo byte programmed_action; /* action forced by game itself (like moving through doors); overrides other actions */ - -#if 0 - byte programmed_speed; /* speed (for only one move) forced by game */ -#endif - - int joystick_fd; /* file descriptor of player's joystick */ int jx,jy, last_jx,last_jy; @@ -318,11 +320,12 @@ struct PlayerInfo int Frame; boolean Pushing; - boolean gone, LevelSolved, GameOver; + boolean LevelSolved, GameOver; boolean snapped; - int move_speed; unsigned long move_delay; + int move_delay_value; + int last_move_dir; unsigned long push_delay; @@ -347,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 @@ -394,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; @@ -461,12 +478,9 @@ 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[]; @@ -480,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[]; @@ -531,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 @@ -585,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 @@ -601,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 @@ -620,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 @@ -808,6 +828,10 @@ extern char *element_info[]; #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 @@ -1250,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 @@ -1281,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 @@ -1295,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"