added support for stacked global animations
[rocksndiamonds.git] / src / main.h
index de5e736dfa727a58eb29059aebf5b2c3ae7c7603..618db1fb84097a4a82094ff982b99f5a09b3ae48 100644 (file)
 #define IS_ENVELOPE(e)         ((e) >= EL_ENVELOPE_1 &&                \
                                 (e) <= EL_ENVELOPE_4)
 
+#define IS_MM_ENVELOPE(e)      ((e) >= EL_MM_ENVELOPE_1 &&             \
+                                (e) <= EL_MM_ENVELOPE_4)
+
 #define IS_BALLOON_ELEMENT(e)  ((e) == EL_BALLOON ||                   \
                                 (e) == EL_BALLOON_SWITCH_LEFT ||       \
                                 (e) == EL_BALLOON_SWITCH_RIGHT ||      \
                                 IS_EM_GATE_GRAY(e) ?  EM_GATE_GRAY_NR(e) :   \
                                 IS_EMC_GATE_GRAY(e) ? EMC_GATE_GRAY_NR(e) : 0)
 
+#define RND_ENVELOPE_NR(e)     ((e) - EL_ENVELOPE_1)
+#define MM_ENVELOPE_NR(e)      ((e) - EL_MM_ENVELOPE_1)
+#define ENVELOPE_NR(e)         (IS_ENVELOPE(e) ? RND_ENVELOPE_NR(e) :  \
+                                MM_ENVELOPE_NR(e))
+
 #define IS_ACID_POOL_OR_ACID(e)        (IS_ACID_POOL(e) || (e) == EL_ACID)
 
 #define IS_EMC_PILLAR(e)       ((e) >= EL_EMC_WALL_1 &&                \
 #define STD_ELEMENT_CONTENTS   4
 #define MAX_ELEMENT_CONTENTS   8
 
+#define MIN_MM_BALL_CONTENTS   1
+#define STD_MM_BALL_CONTENTS   8
+#define MAX_MM_BALL_CONTENTS   16
+
 // values for initial player inventory
 #define MIN_INITIAL_INVENTORY_SIZE     1
 #define MAX_INITIAL_INVENTORY_SIZE     8
 #define EL_MM_WOODEN_GRID_FIXED_4      (EL_MM_WOODEN_GRID_FIXED_START + 3)
 #define EL_MM_WOODEN_GRID_FIXED_END    EL_MM_WOODEN_GRID_FIXED_03
 #define EL_MM_FUEL_EMPTY               (EL_MM_START + 155)
-
-#define EL_MM_UNUSED_156               (EL_MM_START + 156)
-#define EL_MM_UNUSED_157               (EL_MM_START + 157)
-#define EL_MM_UNUSED_158               (EL_MM_START + 158)
-#define EL_MM_UNUSED_159               (EL_MM_START + 159)
+#define EL_MM_ENVELOPE_1               (EL_MM_START + 156)
+#define EL_MM_ENVELOPE_2               (EL_MM_START + 157)
+#define EL_MM_ENVELOPE_3               (EL_MM_START + 158)
+#define EL_MM_ENVELOPE_4               (EL_MM_START + 159)
 
 #define EL_MM_END_1                    (EL_MM_START + 159)
 #define EL_MM_START_2                  (EL_MM_START + 160)
 #define EL_MM_PACMAN_EATING_UP         (EL_FIRST_RUNTIME_REAL + 78)
 #define EL_MM_PACMAN_EATING_LEFT       (EL_FIRST_RUNTIME_REAL + 79)
 #define EL_MM_PACMAN_EATING_DOWN       (EL_FIRST_RUNTIME_REAL + 80)
+#define EL_MM_BOMB_ACTIVE              (EL_FIRST_RUNTIME_REAL + 81)
+#define EL_DF_MINE_ACTIVE              (EL_FIRST_RUNTIME_REAL + 82)
 
-#define NUM_DRAWABLE_ELEMENTS          (EL_FIRST_RUNTIME_REAL + 81)
+#define NUM_DRAWABLE_ELEMENTS          (EL_FIRST_RUNTIME_REAL + 83)
 
 #define EL_MM_RUNTIME_START            EL_MM_EXIT_OPENING
 #define EL_MM_RUNTIME_END              EL_MM_AMOEBA_WALL_GROWING
@@ -2443,6 +2456,10 @@ enum
   GFX_ARG_ACTIVE_YOFFSET,
   GFX_ARG_PRESSED_XOFFSET,
   GFX_ARG_PRESSED_YOFFSET,
+  GFX_ARG_STACKED_XFACTOR,
+  GFX_ARG_STACKED_YFACTOR,
+  GFX_ARG_STACKED_XOFFSET,
+  GFX_ARG_STACKED_YOFFSET,
 
   NUM_GFX_ARGS
 };
@@ -3288,6 +3305,10 @@ struct LevelInfo
   int mm_time_ball;
   int mm_time_block;
 
+  int num_mm_ball_contents;
+  int mm_ball_choice_mode;
+  int mm_ball_content[MAX_MM_BALL_CONTENTS];
+
   // ('int' instead of 'boolean' because used as selectbox value in editor)
   int use_step_counter;                // count steps instead of seconds for level
 
@@ -3673,6 +3694,11 @@ struct GraphicInfo
   int pressed_xoffset;
   int pressed_yoffset;
 
+  int stacked_xfactor;
+  int stacked_yfactor;
+  int stacked_xoffset;
+  int stacked_yoffset;
+
   boolean use_image_size;      // use image size as default width and height
 };
 
@@ -3745,7 +3771,6 @@ struct HelpAnimInfo
 
 
 extern Bitmap                 *bitmap_db_field;
-extern Bitmap                 *bitmap_db_panel;
 extern Bitmap                 *bitmap_db_door_1;
 extern Bitmap                 *bitmap_db_door_2;
 extern Bitmap                 *bitmap_db_store_1;