rnd-20051228-2-src
[rocksndiamonds.git] / src / main.h
index 71bca9d762d8b422edfb2f7a72859466b693bd3b..6fa98bd1504f34a0e504deb7f3ce43e72453806f 100644 (file)
 #define CE_HITTING_X                   28
 #define CE_HIT_BY_X                    29
 #define CE_BLOCKED                     30
+#define CE_SWITCHED_BY_PLAYER          31
+#define CE_PLAYER_SWITCHES_X           32
+#define CE_SNAPPED_BY_PLAYER           33
+#define CE_PLAYER_SNAPS_X              34
+#define CE_MOVE_OF_X                   35
 
-#define NUM_CHANGE_EVENTS              31
+#define NUM_CHANGE_EVENTS              36
 
 #define CE_BITMASK_DEFAULT             0
 
 #define CA_ARG_NUMBER_CE_SCORE         (CA_ARG_NUMBER + 3)
 #define CA_ARG_NUMBER_CE_VALUE         (CA_ARG_NUMBER + 4)
 #define CA_ARG_NUMBER_CE_DELAY         (CA_ARG_NUMBER + 5)
+#define CA_ARG_NUMBER_LEVEL_TIME       (CA_ARG_NUMBER + 6)
+#define CA_ARG_NUMBER_LEVEL_GEMS       (CA_ARG_NUMBER + 7)
+#define CA_ARG_NUMBER_LEVEL_SCORE      (CA_ARG_NUMBER + 8)
 #define CA_ARG_NUMBER_HEADLINE         (CA_ARG_NUMBER + 999)
 #define CA_ARG_ELEMENT                 12000
-#define CA_ARG_ELEMENT_TARGET          (CA_ARG_ELEMENT + 0)
-#define CA_ARG_ELEMENT_TRIGGER         (CA_ARG_ELEMENT + 1)
+#define CA_ARG_ELEMENT_RESET           (CA_ARG_ELEMENT + 0)
+#define CA_ARG_ELEMENT_TARGET          (CA_ARG_ELEMENT + 1)
+#define CA_ARG_ELEMENT_TRIGGER         (CA_ARG_ELEMENT + 2)
 #define CA_ARG_ELEMENT_HEADLINE                (CA_ARG_ELEMENT + 999)
 #define CA_ARG_SPEED                   13000
 #define CA_ARG_SPEED_NOT_MOVING                (CA_ARG_SPEED + 0)
 
 #define IS_RND_GATE_GRAY(e)    ((e) >= EL_GATE_1_GRAY &&               \
                                 (e) <= EL_GATE_4_GRAY)
+#define IS_RND_GATE_GRAY_ACTIVE(e) ((e) >= EL_GATE_1_GRAY_ACTIVE &&    \
+                                (e) <= EL_GATE_4_GRAY_ACTIVE)
 #define IS_EM_GATE_GRAY(e)     ((e) >= EL_EM_GATE_1_GRAY &&            \
                                 (e) <= EL_EM_GATE_4_GRAY)
+#define IS_EM_GATE_GRAY_ACTIVE(e) ((e) >= EL_EM_GATE_1_GRAY_ACTIVE &&  \
+                                (e) <= EL_EM_GATE_4_GRAY_ACTIVE)
 #define IS_EMC_GATE_GRAY(e)    ((e) >= EL_EMC_GATE_5_GRAY &&           \
                                 (e) <= EL_EMC_GATE_8_GRAY)
+#define IS_EMC_GATE_GRAY_ACTIVE(e) ((e) >= EL_EMC_GATE_5_GRAY_ACTIVE &&        \
+                                (e) <= EL_EMC_GATE_8_GRAY_ACTIVE)
 #define IS_GATE_GRAY(e)                (IS_RND_GATE_GRAY(e) ||                 \
                                 IS_EM_GATE_GRAY(e) ||                  \
                                 IS_EMC_GATE_GRAY(e))
+#define IS_GATE_GRAY_ACTIVE(e) (IS_RND_GATE_GRAY_ACTIVE(e) ||          \
+                                IS_EM_GATE_GRAY_ACTIVE(e) ||           \
+                                IS_EMC_GATE_GRAY_ACTIVE(e))
 #define RND_GATE_GRAY_NR(e)    ((e) - EL_GATE_1_GRAY)
+#define RND_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_GATE_1_GRAY_ACTIVE)
 #define EM_GATE_GRAY_NR(e)     ((e) - EL_EM_GATE_1_GRAY)
+#define EM_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EM_GATE_1_GRAY_ACTIVE)
 #define EMC_GATE_GRAY_NR(e)    ((e) - EL_EMC_GATE_5_GRAY + 4)
+#define EMC_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EMC_GATE_5_GRAY_ACTIVE + 4)
 #define GATE_GRAY_NR(e)                (IS_RND_GATE_GRAY(e) ? RND_GATE_GRAY_NR(e) :  \
                                 IS_EM_GATE_GRAY(e) ?  EM_GATE_GRAY_NR(e) :   \
                                 IS_EMC_GATE_GRAY(e) ? EMC_GATE_GRAY_NR(e) : 0)
 #define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 42)
 #define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 43)
 #define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_EMC_FAKE_GRASS_ACTIVE       (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_GATE_1_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 46)
+#define EL_GATE_2_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 47)
+#define EL_GATE_3_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 48)
+#define EL_GATE_4_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 49)
+#define EL_EM_GATE_1_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 50)
+#define EL_EM_GATE_2_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 51)
+#define EL_EM_GATE_3_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 52)
+#define EL_EM_GATE_4_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 53)
+#define EL_EMC_GATE_5_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 54)
+#define EL_EMC_GATE_6_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 55)
+#define EL_EMC_GATE_7_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 56)
+#define EL_EMC_GATE_8_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 57)
+#define EL_EMC_DRIPPER_ACTIVE          (EL_FIRST_RUNTIME_REAL + 58)
 
 /* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 59)
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
 #define PROGRAM_VERSION_PATCH          0
-#define PROGRAM_VERSION_BUILD          5
+#define PROGRAM_VERSION_BUILD          6
 #endif
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
@@ -1664,7 +1699,8 @@ struct PlayerInfo
 
   int GfxAction;
 
-  boolean use_murphy_graphic;
+  boolean use_murphy;
+  int artwork_element;
 
   boolean block_last_field;
   int block_delay_adjustment;  /* needed for different engine versions */
@@ -1800,9 +1836,12 @@ struct LevelInfo
   int extra_time;
   int time_orb_time;
 
+  int extra_time_score;
+
   int start_element[MAX_PLAYERS];
   boolean use_start_element[MAX_PLAYERS];
 
+#if 1
   /* values for the new EMC elements */
   int android_move_time;
   int android_clone_time;
@@ -1817,6 +1856,7 @@ struct LevelInfo
   int wind_direction_initial;
   struct Content ball_content[MAX_ELEMENT_CONTENTS];
   boolean android_array[16];
+#endif
 
   int can_move_into_acid_bits; /* bitfield to store property for elements */
   int dont_collide_with_bits;  /* bitfield to store property for elements */
@@ -1914,6 +1954,12 @@ struct GameInfo
   boolean explosions_delayed;
   boolean envelope_active;
 
+#if 1
+  /* values for the new EMC elements */
+  int lenses_time_left;
+  int magnify_time_left;
+#endif
+
   /* values for player idle animation (no effect on engine) */
   int player_boring_delay_fixed;
   int player_boring_delay_random;