X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_cave.h;h=483b54feafcaafdcf99d6ed4d72753ddc8b23585;hb=0f6b2c62e0c72652c8b2093995845e02b91c51d3;hp=7405016ea3b76d8d4483f868bc89d4e29087c80b;hpb=93a37840d8ff4a84fc878f148e3abfeecb701821;p=rocksndiamonds.git diff --git a/src/game_bd/bd_cave.h b/src/game_bd/bd_cave.h index 7405016e..483b54fe 100644 --- a/src/game_bd/bd_cave.h +++ b/src/game_bd/bd_cave.h @@ -82,7 +82,7 @@ void gd_struct_set_defaults_from_array(void *str, const GdStructDescriptor *prop // these define the number of the cells in the png file #define GD_NUM_OF_CELLS_X 8 -#define GD_NUM_OF_CELLS_Y 46 +#define GD_NUM_OF_CELLS_Y 47 // +80: placeholder for cells which are rendered by the game; // for example diamond + arrow = falling diamond @@ -121,7 +121,11 @@ enum _element_property E_P_MOVED_BY_CONVEYOR_TOP, // can be moved by conveyor belt E_P_MOVED_BY_CONVEYOR_BOTTOM, // can be moved UNDER the conveyor belt + E_P_DIGGABLE, // can be digged E_P_COLLECTIBLE, // can be collected + E_P_PUSHABLE, // can be pushed + E_P_CAN_MOVE, // can move + E_P_CAN_FALL, // can fall }; // properties @@ -154,7 +158,11 @@ enum _element_property #define P_MOVED_BY_CONVEYOR_TOP (1 << E_P_MOVED_BY_CONVEYOR_TOP) #define P_MOVED_BY_CONVEYOR_BOTTOM (1 << E_P_MOVED_BY_CONVEYOR_BOTTOM) +#define P_DIGGABLE (1 << E_P_DIGGABLE) #define P_COLLECTIBLE (1 << E_P_COLLECTIBLE) +#define P_PUSHABLE (1 << E_P_PUSHABLE) +#define P_CAN_MOVE (1 << E_P_CAN_MOVE) +#define P_CAN_FALL (1 << E_P_CAN_FALL) // These are states of the magic wall. typedef enum _magic_wall_state @@ -245,7 +253,7 @@ typedef struct _elements } GdElements; -typedef char GdString[128]; +typedef char GdString[MAX_LINE_LEN]; typedef struct _highscore { @@ -386,6 +394,9 @@ typedef struct _gd_cave int level_magic_wall_time[5]; // magic wall 'on' state for each level (seconds) boolean magic_wall_stops_amoeba; // Turning on magic wall changes amoeba to diamonds. // Original BD: yes, constkit: no + boolean magic_wall_breakscan; // Currently this setting enabled will turn the amoeba to + // an enclosed state. To implement buggy BD1 behaviour. + boolean magic_timer_zero_is_infinite; // magic wall timer 0 is interpreted as infinite boolean magic_timer_wait_for_hatching;// magic wall timer does not start before player's birth boolean magic_wall_sound; // magic wall has sound @@ -424,6 +435,7 @@ typedef struct _gd_cave int level_slime_permeability_c64[5]; // Appearing in bd 2 int level_slime_seed_c64[5]; // predictable slime random seed boolean slime_predictable; // predictable random start for slime. yes for plck. + boolean slime_correct_random; // correct random number generator for rendered caves GdElement slime_eats_1, slime_converts_1; // slime eats element x and converts to element x; // for example diamond -> falling diamond GdElement slime_eats_2, slime_converts_2; // this is usually stone -> stone_f @@ -521,6 +533,9 @@ typedef struct _gd_cave int hammered_wall_reappear_frame; boolean pneumatic_hammer_sound; + boolean infinite_rockets; // if true, the player which got a rocket launcher will be + // able to launch an infinite number of rockets + // internal variables, used during the game. private data :) // returns range corrected x/y position (points to perfect or line shifting get function) @@ -574,6 +589,7 @@ typedef struct _gd_cave int amoeba_2_max_count; // selected amoeba 2 threshold for this level GdAmoebaState amoeba_state; // state of amoeba 1 GdAmoebaState amoeba_2_state; // state of amoeba 2 + boolean convert_amoeba_this_frame; // To implement BD1 buggy amoeba+magic wall behaviour. int magic_wall_time; // magic wall 'on' state for seconds int slime_permeability; // true random slime int slime_permeability_c64; // Appearing in bd 2