enabled initial charging of laser energy (MM engine)
[rocksndiamonds.git] / src / main.h
index 9e164247be52a1ffedf90684e615cffd91c6fc7a..f44d1e30e37d2fafe41e07ad5f71eb888c2342d4 100644 (file)
 #define IS_DF_ELEMENT(e)       ((e) >= EL_DF_START &&                  \
                                 (e) <= EL_DF_END)
 
+#define IS_MM_MCDUFFIN(e)      ((e) >= EL_MM_MCDUFFIN_START &&         \
+                                (e) <= EL_MM_MCDUFFIN_END)
+
+#define IS_DF_LASER(e)         ((e) >= EL_DF_LASER_START &&            \
+                                (e) <= EL_DF_LASER_END)
+
 #define IS_MM_WALL(e)          (((e) >= EL_MM_WALL_START &&            \
                                  (e) <= EL_MM_WALL_END) ||             \
                                 ((e) >= EL_DF_WALL_START &&            \
                                  (e) <= EL_DF_WALL_END))
 
-#define IS_DF_WALL(e)          (((e) >= EL_DF_WALL_START &&            \
-                                 (e) <= EL_DF_WALL_END))
+#define IS_DF_WALL(e)          ((e) >= EL_DF_WALL_START &&             \
+                                (e) <= EL_DF_WALL_END)
+
+#define IS_MM_WALL_EDITOR(e)   ((e) == EL_MM_STEEL_WALL ||             \
+                                (e) == EL_MM_WOODEN_WALL ||            \
+                                (e) == EL_MM_ICE_WALL ||               \
+                                (e) == EL_MM_AMOEBA_WALL ||            \
+                                (e) == EL_DF_STEEL_WALL ||             \
+                                (e) == EL_DF_WOODEN_WALL)
 
 #define IS_ENVELOPE(e)         ((e) >= EL_ENVELOPE_1 &&                \
                                 (e) <= EL_ENVELOPE_4)
 #define IS_DC_STEELWALL_2(e)   ((e) >= EL_DC_STEELWALL_2_LEFT &&       \
                                 (e) <= EL_DC_STEELWALL_2_SINGLE)
 
+#define MM_WALL_BASE(e)                ((e) & 0xfff0)
+#define MM_WALL_BITS(e)                ((e) & 0x000f)
+
 #define GFX_ELEMENT(e)         (element_info[e].gfx_element)
 
 /* !!! CHECK THIS !!! */
@@ -2939,6 +2955,7 @@ struct LevelInfo
 
   int time;                            /* available time (seconds) */
   int gems_needed;
+  boolean auto_count_gems;
 
   char name[MAX_LEVEL_NAME_LEN + 1];
   char author[MAX_LEVEL_AUTHOR_LEN + 1];
@@ -3025,6 +3042,11 @@ struct LevelInfo
   boolean block_last_field;    /* player blocks previous field while moving */
   boolean sp_block_last_field; /* player blocks previous field while moving */
 
+  /* values for MM/DF elements */
+  boolean mm_laser_red, mm_laser_green, mm_laser_blue;
+  boolean df_laser_red, df_laser_green, df_laser_blue;
+  int mm_time_fuse;
+
   /* ('int' instead of 'boolean' because used as selectbox value in editor) */
   int use_step_counter;                /* count steps instead of seconds for level */