X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=7f689c34b2880485316942967d46e2c52dd98c8f;hb=d3eee47071cee093667ee49857d05d4f0142733e;hp=d779c97e9a6ea14a031dba206afe05d969c1fc86;hpb=2ffc7d13be24ed07f4dcb9a77924450f16597720;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index d779c97e..7f689c34 100644 --- a/src/main.h +++ b/src/main.h @@ -14,9 +14,6 @@ #ifndef MAIN_H #define MAIN_H -#include -#include -#include #include #include #include @@ -182,11 +179,10 @@ #define CE_LEFT_BY_PLAYER 22 #define CE_OTHER_GETS_ENTERED 23 #define CE_OTHER_GETS_LEFT 24 +#define CE_SWITCHED 25 +#define CE_OTHER_IS_SWITCHING 26 -/* values for derived change events (determined from properties above) */ -#define CE_TOUCHING_SOME_SIDE 25 /* summarized left/right/up/down/any */ - -#define NUM_CHANGE_EVENTS 26 +#define NUM_CHANGE_EVENTS 27 #define CE_BITMASK_DEFAULT 0 @@ -363,6 +359,9 @@ #define PLAYER_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ PROTECTED_FIELD(x, y)) +#define PLAYER_SWITCHING(p,x,y) ((p)->is_switching && \ + (p)->switch_x == (x) && (p)->switch_y == (y)) + #define PLAYER_NR_GFX(g,i) ((g) + i * (IMG_PLAYER_2 - IMG_PLAYER_1)) #define ANIM_FRAMES(g) (graphic_info[g].anim_frames) @@ -822,24 +821,26 @@ #define EL_CONVEYOR_BELT_4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 25) #define EL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 26) #define EL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 27) -#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 28) -#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 29) -#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 30) -#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 31) -#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 32) -#define EL_AMOEBA_DROPPING (EL_FIRST_RUNTIME_REAL + 33) -#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 34) -#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 35) -#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 36) -#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 37) -#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 38) -#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 39) -#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 40) -#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 41) -#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 42) +#define EL_SP_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 28) +#define EL_SP_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 29) +#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 30) +#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 31) +#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 32) +#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 33) +#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 34) +#define EL_AMOEBA_DROPPING (EL_FIRST_RUNTIME_REAL + 35) +#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 36) +#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 37) +#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 38) +#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 39) +#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 40) +#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 41) +#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 42) +#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 43) +#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 44) /* "unreal" (and therefore not drawable) runtime elements */ -#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 43) +#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 45) #define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0) #define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1) @@ -1027,9 +1028,9 @@ #define PROGRAM_VERSION_MAJOR 3 #define PROGRAM_VERSION_MINOR 0 -#define PROGRAM_VERSION_PATCH 5 +#define PROGRAM_VERSION_PATCH 7 #define PROGRAM_VERSION_RELEASE 0 -#define PROGRAM_VERSION_STRING "3.0.5" +#define PROGRAM_VERSION_STRING "3.0.7" #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" @@ -1135,18 +1136,20 @@ struct PlayerInfo int GfxAction; boolean use_murphy_graphic; - boolean use_disk_red_graphic; - boolean Pushing; - boolean Switching; boolean LevelSolved, GameOver; - boolean snapped; int last_move_dir; - boolean is_moving; + boolean is_waiting; + boolean is_moving; boolean is_digging; + boolean is_snapping; boolean is_collecting; + boolean is_pushing; + boolean is_switching; + + int switch_x, switch_y; int show_envelope; @@ -1198,7 +1201,7 @@ struct LevelInfo int time_light; int time_timegate; boolean double_speed; - boolean gravity; + boolean initial_gravity; boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -1243,14 +1246,16 @@ struct TapeInfo struct GameInfo { + /* values for engine initialization */ + int default_push_delay_fixed; + int default_push_delay_random; + /* constant within running game */ int engine_version; int emulation; int initial_move_delay; int initial_move_delay_value; - boolean envelope_active; - /* variable within running game */ int yamyam_content_nr; boolean magic_wall_active; @@ -1261,7 +1266,9 @@ struct GameInfo int belt_dir_nr[4]; int switchgate_pos; int balloon_dir; + boolean gravity; boolean explosions_delayed; + boolean envelope_active; }; struct GlobalInfo @@ -1475,6 +1482,7 @@ extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -1483,7 +1491,8 @@ extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern unsigned long Changed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern unsigned long ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short AmoebaCnt[MAX_NUM_AMOEBA]; extern short AmoebaCnt2[MAX_NUM_AMOEBA];