rnd-20040114-1-src
[rocksndiamonds.git] / src / main.h
index 39692e8562ad56d763a6ae1893267286b26b3aa2..9756b100ae983bcad19844ebbe2a084f44711dd0 100644 (file)
 #define EL_BD_MAGIC_WALL               61
 #define EL_INVISIBLE_STEELWALL         62
 
-#define EL_MAZE_RUNNER                 63
+#define EL_UNUSED_63                   63
 
 #define EL_DYNABOMB_INCREASE_NUMBER    64
 #define EL_DYNABOMB_INCREASE_SIZE      65
@@ -1464,8 +1464,12 @@ struct ElementChangeInfo
 struct ElementGroupInfo
 {
   int num_elements;                    /* number of elements in this group */
-
   short element[MAX_ELEMENTS_IN_GROUP];        /* list of elements in this group */
+
+  /* the following is the same as above, but with recursively resolved group
+     elements (group elements may also contain further group elements!) */
+  int num_elements_resolved;
+  short element_resolved[NUM_FILE_ELEMENTS];
 };
 
 struct ElementInfo
@@ -1476,7 +1480,7 @@ struct ElementInfo
   char *class_name;            /* element class used in config files */
   char *editor_description;    /* pre-defined description for level editor */
   char *custom_description;    /* alternative description from config file */
-  char description[MAX_ELEMENT_NAME_LEN + 1];  /* for custom elements */
+  char description[MAX_ELEMENT_NAME_LEN + 1];  /* for custom/group elements */
 
   /* ---------- graphic and sound definitions ---------- */
 
@@ -1509,6 +1513,8 @@ struct ElementInfo
   int move_pattern;            /* direction movable element moves to */
   int move_direction_initial;  /* initial direction element moves to */
   int move_stepsize;           /* step size element moves with */
+  int move_enter_element;      /* element that can be entered (and removed) */
+  int move_leave_element;      /* element that can be left behind */
 
   int slippery_type;           /* how/where other elements slip away */
 
@@ -1529,6 +1535,8 @@ struct ElementInfo
   int event_page_nr[NUM_CHANGE_EVENTS]; /* page number for each event */
   struct ElementChangeInfo *event_page[NUM_CHANGE_EVENTS]; /* page for event */
 
+  boolean in_group[NUM_GROUP_ELEMENTS];
+
   /* ---------- internal values used in level editor ---------- */
 
   int access_type;             /* walkable or passable */