rnd-20051230-1-src
[rocksndiamonds.git] / src / main.h
index 49c07a6cd9852390c0d66bb19fecb640cae72fd3..5331d94a2126f4b30e0dc6e3209ec1ed8b98b23a 100644 (file)
 /* values for internal purpose only (level editor) */
 #define EP_WALK_TO_OBJECT              81
 #define EP_DEADLY                      82
+#define EP_EDITOR_CASCADE              83
+#define EP_EDITOR_CASCADE_ACTIVE       84
+#define EP_EDITOR_CASCADE_INACTIVE     85
 
 /* values for internal purpose only (game engine) */
-#define EP_HAS_ACTION                  83
-#define EP_CAN_CHANGE_OR_HAS_ACTION    84
+#define EP_HAS_ACTION                  86
+#define EP_CAN_CHANGE_OR_HAS_ACTION    87
 
-#define NUM_ELEMENT_PROPERTIES         85
+#define NUM_ELEMENT_PROPERTIES         88
 
 #define NUM_EP_BITFIELDS               ((NUM_ELEMENT_PROPERTIES + 31) / 32)
 #define EP_BITFIELD_BASE               0
                                HAS_PROPERTY(e, EP_CAN_EXPLODE_BY_EXPLOSION)
 #define COULD_MOVE_INTO_ACID(e)        HAS_PROPERTY(e, EP_COULD_MOVE_INTO_ACID)
 #define MAYBE_DONT_COLLIDE_WITH(e) HAS_PROPERTY(e, EP_MAYBE_DONT_COLLIDE_WITH)
+
+#define IS_EDITOR_CASCADE(e)   HAS_PROPERTY(e, EP_EDITOR_CASCADE)
+#define IS_EDITOR_CASCADE_ACTIVE(e)    \
+                               HAS_PROPERTY(e, EP_EDITOR_CASCADE_ACTIVE)
+#define IS_EDITOR_CASCADE_INACTIVE(e)  \
+                               HAS_PROPERTY(e, EP_EDITOR_CASCADE_INACTIVE)
+
 #define HAS_ACTION(e)          HAS_PROPERTY(e, EP_HAS_ACTION)
 #define CAN_CHANGE_OR_HAS_ACTION(e)    \
                                HAS_PROPERTY(e, EP_CAN_CHANGE_OR_HAS_ACTION)
 
 #define IS_LOOP_SOUND(s)       (sound_info[s].loop)
 
+#define EL_CASCADE_ACTIVE(e)   (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 : (e))
+#define EL_CASCADE_INACTIVE(e) (IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
+#define EL_CASCADE_TOGGLE(e)   (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 :    \
+                                IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
+
 
 /* fundamental game speed values */
 #define ONE_SECOND_DELAY       1000    /* delay value for one second */
 #define EL_INTERNAL_CLIPBOARD_GROUP    (EL_FIRST_INTERNAL + 2)
 #define EL_INTERNAL_DUMMY              (EL_FIRST_INTERNAL + 3)
 
+#define EL_INTERNAL_CASCADE_BD         (EL_FIRST_INTERNAL + 4)
+#define EL_INTERNAL_CASCADE_BD_ACTIVE  (EL_FIRST_INTERNAL + 5)
+#define EL_INTERNAL_CASCADE_EM         (EL_FIRST_INTERNAL + 6)
+#define EL_INTERNAL_CASCADE_EM_ACTIVE  (EL_FIRST_INTERNAL + 7)
+#define EL_INTERNAL_CASCADE_EMC                (EL_FIRST_INTERNAL + 8)
+#define EL_INTERNAL_CASCADE_EMC_ACTIVE (EL_FIRST_INTERNAL + 9)
+#define EL_INTERNAL_CASCADE_RND                (EL_FIRST_INTERNAL + 10)
+#define EL_INTERNAL_CASCADE_RND_ACTIVE (EL_FIRST_INTERNAL + 11)
+#define EL_INTERNAL_CASCADE_SB         (EL_FIRST_INTERNAL + 12)
+#define EL_INTERNAL_CASCADE_SB_ACTIVE  (EL_FIRST_INTERNAL + 13)
+#define EL_INTERNAL_CASCADE_SP         (EL_FIRST_INTERNAL + 14)
+#define EL_INTERNAL_CASCADE_SP_ACTIVE  (EL_FIRST_INTERNAL + 15)
+#define EL_INTERNAL_CASCADE_DC         (EL_FIRST_INTERNAL + 16)
+#define EL_INTERNAL_CASCADE_DC_ACTIVE  (EL_FIRST_INTERNAL + 17)
+#define EL_INTERNAL_CASCADE_DX         (EL_FIRST_INTERNAL + 18)
+#define EL_INTERNAL_CASCADE_DX_ACTIVE  (EL_FIRST_INTERNAL + 19)
+#define EL_INTERNAL_CASCADE_TEXT       (EL_FIRST_INTERNAL + 20)
+#define EL_INTERNAL_CASCADE_TEXT_ACTIVE        (EL_FIRST_INTERNAL + 21)
+#define EL_INTERNAL_CASCADE_CE         (EL_FIRST_INTERNAL + 22)
+#define EL_INTERNAL_CASCADE_CE_ACTIVE  (EL_FIRST_INTERNAL + 23)
+#define EL_INTERNAL_CASCADE_GE         (EL_FIRST_INTERNAL + 24)
+#define EL_INTERNAL_CASCADE_GE_ACTIVE  (EL_FIRST_INTERNAL + 25)
+#define EL_INTERNAL_CASCADE_USER       (EL_FIRST_INTERNAL + 26)
+#define EL_INTERNAL_CASCADE_USER_ACTIVE        (EL_FIRST_INTERNAL + 27)
+#define EL_INTERNAL_CASCADE_GENERIC       (EL_FIRST_INTERNAL + 28)
+#define EL_INTERNAL_CASCADE_GENERIC_ACTIVE (EL_FIRST_INTERNAL + 29)
+#define EL_INTERNAL_CASCADE_DYNAMIC       (EL_FIRST_INTERNAL + 30)
+#define EL_INTERNAL_CASCADE_DYNAMIC_ACTIVE (EL_FIRST_INTERNAL + 31)
+
 #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 + 3)
+#define EL_INTERNAL_END                        (EL_FIRST_INTERNAL + 31)
 
-#define MAX_NUM_ELEMENTS               (EL_FIRST_INTERNAL + 4)
+#define MAX_NUM_ELEMENTS               (EL_FIRST_INTERNAL + 32)
 
 
 /* values for graphics/sounds action types */