projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added property for growing BD engine game elements
[rocksndiamonds.git]
/
src
/
game_bd
/
bd_cave.h
diff --git
a/src/game_bd/bd_cave.h
b/src/game_bd/bd_cave.h
index 7405016ea3b76d8d4483f868bc89d4e29087c80b..aea976e860decb2626630dc842eb03dd60ba0662 100644
(file)
--- 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
// 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
// +80: placeholder for cells which are rendered by the game;
// for example diamond + arrow = falling diamond
@@
-121,7
+121,13
@@
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_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_COLLECTIBLE, // can be collected
+ E_P_PUSHABLE, // can be pushed
+ E_P_CAN_MOVE, // can move
+ E_P_CAN_FALL, // can fall
+ E_P_FALLING, // falling
+ E_P_GROWING, // growing (element birth)
};
// properties
};
// properties
@@
-154,7
+160,13
@@
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_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_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)
+#define P_FALLING (1 << E_P_FALLING)
+#define P_GROWING (1 << E_P_GROWING)
// These are states of the magic wall.
typedef enum _magic_wall_state
// These are states of the magic wall.
typedef enum _magic_wall_state
@@
-245,7
+257,7
@@
typedef struct _elements
} GdElements;
} GdElements;
-typedef char GdString[
128
];
+typedef char GdString[
MAX_LINE_LEN
];
typedef struct _highscore
{
typedef struct _highscore
{
@@
-386,6
+398,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
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
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
+439,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.
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
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
+537,9
@@
typedef struct _gd_cave
int hammered_wall_reappear_frame;
boolean pneumatic_hammer_sound;
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)
// internal variables, used during the game. private data :)
// returns range corrected x/y position (points to perfect or line shifting get function)
@@
-574,6
+593,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
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
int magic_wall_time; // magic wall 'on' state for seconds
int slime_permeability; // true random slime
int slime_permeability_c64; // Appearing in bd 2
@@
-645,6
+665,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_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);
void gd_cave_auto_shrink(GdCave *cave);
void gd_cave_setup_for_game(GdCave *cave);
@@
-680,7
+701,8
@@
GdScheduling gd_scheduling_from_string(const char *str);
// game playing helpers
#define GD_REDRAW (1 << 10)
// 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
boolean bonus_life_flash, int animcycle, boolean hate_invisible_outbox);
// function to copy a GdString