X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_cave.h;h=9a0c52a720a228bd3ecbe4e18d49e6027816e5ad;hb=a3d3dca44696b194dbe3f49a97d8c92d92b42ecf;hp=67eed046d9acb48c6dbfddf80a62f6a43d4df46d;hpb=2a0c267efdb892885b57233886fa32763833be5c;p=rocksndiamonds.git diff --git a/src/game_bd/bd_cave.h b/src/game_bd/bd_cave.h index 67eed046..9a0c52a7 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 51 // +80: placeholder for cells which are rendered by the game; // for example diamond + arrow = falling diamond @@ -126,6 +126,7 @@ enum _element_property E_P_PUSHABLE, // can be pushed E_P_CAN_MOVE, // can move E_P_CAN_FALL, // can fall + E_P_FALLING, // falling }; // properties @@ -163,6 +164,7 @@ enum _element_property #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) +#define P_FALLING (1 << E_P_FALLING) // These are states of the magic wall. typedef enum _magic_wall_state @@ -394,6 +396,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 @@ -530,6 +535,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) @@ -583,6 +591,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 @@ -654,6 +663,7 @@ void gd_cave_free(GdCave *cave); void gd_cave_set_gdash_defaults(GdCave *cave); void gd_cave_set_defaults_from_array(GdCave* cave, GdPropertyDefault *defaults); void gd_cave_correct_visible_size(GdCave *cave); +void gd_cave_set_random_colors(GdCave *cave, GdColorType type); void gd_cave_auto_shrink(GdCave *cave); void gd_cave_setup_for_game(GdCave *cave); @@ -689,7 +699,8 @@ GdScheduling gd_scheduling_from_string(const char *str); // game playing helpers #define GD_REDRAW (1 << 10) -void gd_drawcave_game(const GdCave *cave, int **element_buffer, int **gfx_buffer, +void gd_drawcave_game(const GdCave *cave, + int **element_buffer, int **last_element_buffer, int **gfx_buffer, boolean bonus_life_flash, int animcycle, boolean hate_invisible_outbox); // function to copy a GdString