rnd-20040322-B-src
[rocksndiamonds.git] / src / main.h
index 44c5059792fc13d8c5bda873638b6d487921d844..682f9247774e054e111439d9f17556845f1015b1 100644 (file)
@@ -86,7 +86,7 @@
 #define EP_DROPPABLE           22
 #define EP_CAN_EXPLODE_1X1     23
 #define EP_PUSHABLE            24
-#define EP_CAN_EXPLODE_DYNA    25
+#define EP_CAN_EXPLODE_CROSS   25
 #define EP_PROTECTED           26
 #define EP_CAN_MOVE_INTO_ACID  27
 
 #define IS_DROPPABLE(e)                HAS_PROPERTY(e, EP_DROPPABLE)
 #define CAN_EXPLODE_1X1(e)     HAS_PROPERTY(e, EP_CAN_EXPLODE_1X1)
 #define IS_PUSHABLE(e)         HAS_PROPERTY(e, EP_PUSHABLE)
-#define CAN_EXPLODE_DYNA(e)    HAS_PROPERTY(e, EP_CAN_EXPLODE_DYNA)
+#define CAN_EXPLODE_CROSS(e)   HAS_PROPERTY(e, EP_CAN_EXPLODE_CROSS)
 #define IS_PROTECTED(e)                HAS_PROPERTY(e, EP_PROTECTED)
 #define CAN_MOVE_INTO_ACID(e)  HAS_PROPERTY(e, EP_CAN_MOVE_INTO_ACID)
 
 #define IS_GROUP_ELEMENT(e)    ((e) >= EL_GROUP_START &&               \
                                 (e) <= EL_GROUP_END)
 
+#define IS_CLIPBOARD_ELEMENT(e)        ((e) >= EL_INTERNAL_CLIPBOARD_START &&  \
+                                (e) <= EL_INTERNAL_CLIPBOARD_END)
+
 #define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START &&            \
                                 (e) <= EL_INTERNAL_END)
 
 #define EL_FIRST_INTERNAL                      (EL_FIRST_DUMMY + 25)
 
 #define EL_INTERNAL_CLIPBOARD_CUSTOM           (EL_FIRST_INTERNAL + 0)
-#define EL_INTERNAL_CLIPBOARD_GROUP            (EL_FIRST_INTERNAL + 1)
-#define EL_INTERNAL_DUMMY                      (EL_FIRST_INTERNAL + 2)
+#define EL_INTERNAL_CLIPBOARD_CHANGE           (EL_FIRST_INTERNAL + 1)
+#define EL_INTERNAL_CLIPBOARD_GROUP            (EL_FIRST_INTERNAL + 2)
+#define EL_INTERNAL_DUMMY                      (EL_FIRST_INTERNAL + 3)
 
+#define EL_INTERNAL_CLIPBOARD_START            (EL_FIRST_INTERNAL + 0)
+#define EL_INTERNAL_CLIPBOARD_END              (EL_FIRST_INTERNAL + 2)
 #define EL_INTERNAL_START                      (EL_FIRST_INTERNAL + 0)
-#define EL_INTERNAL_END                                (EL_FIRST_INTERNAL + 2)
+#define EL_INTERNAL_END                                (EL_FIRST_INTERNAL + 3)
 
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_INTERNAL + 3)
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_INTERNAL + 4)
 
 
 /* values for graphics/sounds action types */
 #define PROGRAM_VERSION_MAJOR  3
 #define PROGRAM_VERSION_MINOR  1
 #define PROGRAM_VERSION_PATCH  0
-#define PROGRAM_VERSION_BUILD  0
+#define PROGRAM_VERSION_BUILD  2
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1473,7 +1479,8 @@ struct TapeInfo
   boolean pause_before_death;
   boolean recording, playing, pausing;
   boolean fast_forward;
-  boolean index_search;
+  boolean warp_forward;
+  boolean deactivate_display;
   boolean auto_play;
   boolean auto_play_level_solved;
   boolean quick_resume;
@@ -1564,14 +1571,14 @@ struct ElementChangeInfo
 
   boolean explode;             /* explode instead of change */
 
+  /* ---------- internal values used at runtime when playing ---------- */
+
   /* functions that are called before, while and after the change of an
      element -- currently only used for non-custom elements */
   void (*pre_change_function)(int x, int y);
   void (*change_function)(int x, int y);
   void (*post_change_function)(int x, int y);
 
-  /* ---------- internal values used at runtime when playing ---------- */
-
   short actual_trigger_element;        /* element that actually triggered change */
   int actual_trigger_player;   /* player which actually triggered change */
 
@@ -1633,10 +1640,12 @@ struct ElementInfo
   int collect_score;           /* score value for collecting */
   int collect_count;           /* count value for collecting */
 
-  int push_delay_fixed;                /* constant frame delay for pushing */
-  int push_delay_random;       /* additional random frame delay for pushing */
-  int move_delay_fixed;                /* constant frame delay for moving */
-  int move_delay_random;       /* additional random frame delay for moving */
+  int push_delay_fixed;                /* constant delay before pushing */
+  int push_delay_random;       /* additional random delay before pushing */
+  int drop_delay_fixed;                /* constant delay after dropping */
+  int drop_delay_random;       /* additional random delay after dropping */
+  int move_delay_fixed;                /* constant delay after moving */
+  int move_delay_random;       /* additional random delay after moving */
 
   int move_pattern;            /* direction movable element moves to */
   int move_direction_initial;  /* initial direction element moves to */
@@ -1669,8 +1678,10 @@ struct ElementInfo
 
   boolean in_group[NUM_GROUP_ELEMENTS];
 
+#if 0
   boolean can_leave_element;   /* element can leave other element behind */
   boolean can_leave_element_last;
+#endif
 
   /* ---------- internal values used in level editor ---------- */