rnd-20040111-2-src
[rocksndiamonds.git] / src / main.h
index 7edb064dcb758e4597099df743af5fbbc6b87abd..39692e8562ad56d763a6ae1893267286b26b3aa2 100644 (file)
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&              \
                                 (e) <= EL_CUSTOM_END)
 
+#define IS_GROUP_ELEMENT(e)    ((e) >= EL_GROUP_START &&               \
+                                (e) <= EL_GROUP_END)
+
 #define IS_ENVELOPE(e)         ((e) >= EL_ENVELOPE_1 &&                \
                                 (e) <= EL_ENVELOPE_4)
 
 #define MAX_ENVELOPE_TEXT_LEN  (MAX_ENVELOPE_XSIZE * MAX_ENVELOPE_YSIZE)
 #define MIN_CHANGE_PAGES       1
 #define MAX_CHANGE_PAGES       16
+#define MIN_ELEMENTS_IN_GROUP  1
+#define MAX_ELEMENTS_IN_GROUP  16
 
 /* values for elements with content */
 #define MIN_ELEMENT_CONTENTS   1
 #define EL_ENVELOPE_3                  622
 #define EL_ENVELOPE_4                  623
 
-#define NUM_FILE_ELEMENTS              624
+/* ---------- begin of group elements section ------------------------------ */
+#define EL_GROUP_START                 624
+
+#include "conf_grp.h"  /* include auto-generated data structure definitions */
+
+#define NUM_GROUP_ELEMENTS             32
+#define EL_GROUP_END                   655
+/* ---------- end of custom elements section ------------------------------- */
+
+#define NUM_FILE_ELEMENTS              656
 
 
 /* "real" (and therefore drawable) runtime elements */
@@ -1259,6 +1273,8 @@ struct PlayerInfo
   unsigned long move_delay;
   int move_delay_value;
 
+  int move_delay_reset_counter;
+
   unsigned long push_delay;
   unsigned long push_delay_value;
 
@@ -1445,6 +1461,13 @@ struct ElementChangeInfo
   int other_action;            /* change triggered by other element actions */
 };
 
+struct ElementGroupInfo
+{
+  int num_elements;                    /* number of elements in this group */
+
+  short element[MAX_ELEMENTS_IN_GROUP];        /* list of elements in this group */
+};
+
 struct ElementInfo
 {
   /* ---------- token and description strings ---------- */
@@ -1497,6 +1520,8 @@ struct ElementInfo
   int num_change_pages;                /* actual number of change pages */
   int current_change_page;     /* currently edited change page */
 
+  struct ElementGroupInfo *group;      /* pointer to element group info */
+
   /* ---------- internal values used at runtime when playing ---------- */
 
   unsigned long change_events; /* bitfield for combined change events */