rnd-20030509-1-src
[rocksndiamonds.git] / src / main.h
index 3f9f9177b39dbb4c5401082ca1b71cc851cd4f4c..8e918517e81c98d298f113bc8704258bb979962e 100644 (file)
 
 /* macros for pre-defined properties */
 #define ELEM_IS_PLAYER(e)      HAS_PROPERTY(e, EP_PLAYER)
-#define CAN_BE_CRUMBLED(e)     HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED)
+#define CAN_BE_CRUMBLED_OLD(e) HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED)
+#define CAN_BE_CRUMBLED(e)     HAS_PROPERTY(GFX_ELEMENT(e),EP_CAN_BE_CRUMBLED)
 #define CAN_MOVE(e)            HAS_PROPERTY(e, EP_CAN_MOVE)
 #define CAN_PASS_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_MAGIC_WALL)
 #define IS_SWITCHABLE(e)       HAS_PROPERTY(e, EP_SWITCHABLE)
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&      \
                                 (e) <= EL_CUSTOM_END)
 
+#define GFX_ELEMENT(e)         (IS_CUSTOM_ELEMENT(e) &&                  \
+                                CUSTOM_ELEMENT_INFO(e).use_gfx_element ? \
+                                CUSTOM_ELEMENT_INFO(e).gfx_element : e)
+
 #define IS_PLAYER(x,y)         (ELEM_IS_PLAYER(StorePlayer[x][y]))
 
 #define IS_FREE(x,y)           (Feld[x][y] == EL_EMPTY && !IS_PLAYER(x,y))
 #define IS_LOOP_SOUND(s)       (sound_info[s].loop)
 
 
-#if 0
-
-/* Bitmaps with graphic file */
-#define PIX_BACK               0
-#define PIX_DOOR               1
-#define PIX_TOONS              2
-#define PIX_FONT_BIG           3
-#define PIX_FONT_SMALL         4
-#define PIX_FONT_MEDIUM                5
-#define PIX_FONT_EM            6
-/* Bitmaps without graphic file */
-#define PIX_DB_DOOR            7
-#define PIX_DB_FIELD           8
-
-#define NUM_PICTURES           7
-#define NUM_BITMAPS            9
-
-#else
-
-/* Bitmaps with graphic file */
-#define PIX_BACK               0
-#define PIX_ELEMENTS           1
-#define PIX_DOOR               2
-#define PIX_HEROES             3
-#define PIX_TOONS              4
-#define PIX_SP                 5
-#define PIX_DC                 6
-#define PIX_MORE               7
-#define PIX_FONT_BIG           8
-#define PIX_FONT_SMALL         9
-#define PIX_FONT_MEDIUM                10
-#define PIX_FONT_EM            11
-/* Bitmaps without graphic file */
-#define PIX_DB_DOOR            12
-#define PIX_DB_FIELD           13
-
-#define NUM_PICTURES           12
-#define NUM_BITMAPS            14
-
-#endif
-
 /* boundaries of arrays etc. */
 #define MAX_LEVEL_NAME_LEN     32
 #define MAX_LEVEL_AUTHOR_LEN   32
 #define MAX_TAPELEN            (1000 * 50)     /* max. time * framerate */
 #define MAX_SCORE_ENTRIES      100
-#if 0
-#define MAX_ELEMENTS           700             /* 500 static + 200 runtime */
-#define MAX_GRAPHICS           1536            /* see below: NUM_TILES */
-#endif
 #define MAX_NUM_AMOEBA         100
 
 /* values for elements with content */
@@ -1057,16 +1017,20 @@ struct PlayerInfo
 
 struct CustomElementChangeInfo
 {
-  unsigned long events;        /* bitfield for change events */
+  unsigned long events;                /* bitfield for change events */
 
-  short successor;     /* new custom element after change */
+  int delay_fixed;             /* added frame delay before changed (fixed) */
+  int delay_random;            /* added frame delay before changed (random) */
+  int delay_frames;            /* either 1 (frames) or 50 (seconds; 50 fps) */
 
-  int delay_fixed;     /* added frame delay before changed (fixed) */
-  int delay_random;    /* added frame delay before changed (random) */
+  short successor;             /* new custom element after change */
 };
 
 struct CustomElementInfo
 {
+  boolean use_gfx_element;
+  short gfx_element;           /* optional custom graphic element */
+
   struct CustomElementChangeInfo change;
 };