rnd-20051215-1-src
[rocksndiamonds.git] / src / main.h
index b52a5e8fbc44b1d79622a1ce7edca94b1d1aa7ba..7805f3496b79e0e167eeb75878a1d9a01f60ad7f 100644 (file)
 #define PLAYER_BITS_TRIGGER    (1 << 4)
 
 /* values for change side for custom elements */
-#define CH_SIDE_NONE           MV_NO_MOVING
+#define CH_SIDE_NONE           MV_NONE
 #define CH_SIDE_LEFT           MV_LEFT
 #define CH_SIDE_RIGHT          MV_RIGHT
 #define CH_SIDE_TOP            MV_UP
 #define MV_BIT_TURNING_LEFT_RIGHT 14
 #define MV_BIT_TURNING_RIGHT_LEFT 15
 #define MV_BIT_TURNING_RANDOM  16
+#define MV_BIT_WIND_DIRECTION  17
 
 /* values for custom move patterns */
 #define MV_TOWARDS_PLAYER      (1 << MV_BIT_TOWARDS_PLAYER)
 #define MV_TURNING_LEFT_RIGHT  (1 << MV_BIT_TURNING_LEFT_RIGHT)
 #define MV_TURNING_RIGHT_LEFT  (1 << MV_BIT_TURNING_RIGHT_LEFT)
 #define MV_TURNING_RANDOM      (1 << MV_BIT_TURNING_RANDOM)
+#define MV_WIND_DIRECTION      (1 << MV_BIT_WIND_DIRECTION)
 
 /* values for initial move direction (bits 0 - 3: basic move directions) */
 #define MV_START_BIT_PREVIOUS  4
 
 /* values for initial move direction */
-#define MV_START_AUTOMATIC     (MV_NO_MOVING)
+#define MV_START_NONE          (MV_NONE)
+#define MV_START_AUTOMATIC     (MV_NONE)
 #define MV_START_LEFT          (MV_LEFT)
 #define MV_START_RIGHT         (MV_RIGHT)
 #define MV_START_UP            (MV_UP)
 #define MIN_ELEMENT_CONTENTS   1
 #define STD_ELEMENT_CONTENTS   4
 #define MAX_ELEMENT_CONTENTS   8
-#define NUM_MAGIC_BALL_CONTENTS        8
 
 #define LEVEL_SCORE_ELEMENTS   16      /* level elements with score */
 
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
 #define PROGRAM_VERSION_PATCH          0
-#define PROGRAM_VERSION_BUILD          4
+#define PROGRAM_VERSION_BUILD          5
 #endif
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
@@ -1584,6 +1586,11 @@ struct HiScore
   int Score;
 };
 
+struct Content
+{
+  int e[3][3];
+};
+
 struct PlayerInfo
 {
   boolean present;             /* player present in level playfield */
@@ -1722,17 +1729,26 @@ struct LevelInfo
 
   int score[LEVEL_SCORE_ELEMENTS];
 
-  int yamyam_content[MAX_ELEMENT_CONTENTS][3][3];
+  struct Content yamyam_content[MAX_ELEMENT_CONTENTS];
   int num_yamyam_contents;
 
   int amoeba_speed;
   int amoeba_content;
 
+  int game_of_life[4];
+  int biomaze[4];
+
   int time_magic_wall;
   int time_wheel;
   int time_light;
   int time_timegate;
 
+  int shield_normal_time;
+  int shield_deadly_time;
+
+  int extra_time;
+  int time_orb_time;
+
   /* values for the new EMC elements */
   int android_move_time;
   int android_clone_time;
@@ -1745,7 +1761,7 @@ struct LevelInfo
   int lenses_time;
   int magnify_time;
   int wind_direction_initial;
-  int ball_content[NUM_MAGIC_BALL_CONTENTS][3][3];
+  struct Content ball_content[MAX_ELEMENT_CONTENTS];
   boolean android_array[16];
 
   int can_move_into_acid_bits; /* bitfield to store property for elements */
@@ -1837,7 +1853,7 @@ struct GameInfo
   int belt_dir[4];
   int belt_dir_nr[4];
   int switchgate_pos;
-  int balloon_dir;
+  int wind_direction;
   boolean gravity;
   boolean explosions_delayed;
   boolean envelope_active;
@@ -1886,7 +1902,7 @@ struct ElementChangeInfo
 
   short trigger_element;       /* element triggering change */
 
-  int target_content[3][3];    /* elements for extended change target */
+  struct Content target_content;/* elements for extended change target */
   boolean use_target_content;  /* use extended change target */
   boolean only_if_complete;    /* only use complete target content */
   boolean use_random_replace;  /* use random value for replacing elements */
@@ -1997,7 +2013,7 @@ struct ElementInfo
 
   int slippery_type;           /* how/where other elements slip away */
 
-  int content[3][3];           /* new elements after explosion */
+  struct Content content;      /* new elements after explosion */
 
   int explosion_type;          /* type of explosion, like 3x3, 3+3 or 1x1 */
   int explosion_delay;         /* duration of explosion of this element */