rnd-20060112-1-src
[rocksndiamonds.git] / src / main.h
index c723314da1beff2bd100566104d0fe042d6c01f1..86a7ea1d84a6f10c55ec5ef9a5d5d740dc44f3da 100644 (file)
 #define EP_KEYGATE                     49
 #define EP_AMOEBOID                    50
 #define EP_AMOEBALIVE                  51
-#define EP_HAS_CONTENT                 52
+#define EP_HAS_EDITOR_CONTENT          52
 #define EP_CAN_TURN_EACH_MOVE          53
 #define EP_CAN_GROW                    54
 #define EP_ACTIVE_BOMB                 55
 #define MV_NORMAL                      (1 << MV_BIT_NORMAL)
 #define MV_REVERSE                     (1 << MV_BIT_REVERSE)
 
+/* values for move stepsize */
+#define STEPSIZE_NOT_MOVING            0
+#define STEPSIZE_VERY_SLOW             1
+#define STEPSIZE_SLOW                  2
+#define STEPSIZE_NORMAL                        4
+#define STEPSIZE_FAST                  8
+#define STEPSIZE_VERY_FAST             16
+#define STEPSIZE_EVEN_FASTER           32
+#define STEPSIZE_SLOWER                        50      /* (symbolic value only) */
+#define STEPSIZE_FASTER                        200     /* (symbolic value only) */
+#define STEPSIZE_RESET                 100     /* (symbolic value only) */
+
 /* values for change side for custom elements */
 #define CH_SIDE_NONE                   MV_NONE
 #define CH_SIDE_LEFT                   MV_LEFT
 #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 CA_ARG_SPEED_VERY_SLOW         (CA_ARG_SPEED + 1)
-#define CA_ARG_SPEED_SLOW              (CA_ARG_SPEED + 2)
-#define CA_ARG_SPEED_NORMAL            (CA_ARG_SPEED + 4)
-#define CA_ARG_SPEED_FAST              (CA_ARG_SPEED + 8)
-#define CA_ARG_SPEED_VERY_FAST         (CA_ARG_SPEED + 16)
-#define CA_ARG_SPEED_EVEN_FASTER       (CA_ARG_SPEED + 32)
-#define CA_ARG_SPEED_SLOWER            (CA_ARG_SPEED + 50)
-#define CA_ARG_SPEED_FASTER            (CA_ARG_SPEED + 200)
-#define CA_ARG_SPEED_RESET             (CA_ARG_SPEED + 100)
+#define CA_ARG_SPEED_NOT_MOVING                (CA_ARG_SPEED + STEPSIZE_NOT_MOVING)
+#define CA_ARG_SPEED_VERY_SLOW         (CA_ARG_SPEED + STEPSIZE_VERY_SLOW)
+#define CA_ARG_SPEED_SLOW              (CA_ARG_SPEED + STEPSIZE_SLOW)
+#define CA_ARG_SPEED_NORMAL            (CA_ARG_SPEED + STEPSIZE_NORMAL)
+#define CA_ARG_SPEED_FAST              (CA_ARG_SPEED + STEPSIZE_FAST)
+#define CA_ARG_SPEED_VERY_FAST         (CA_ARG_SPEED + STEPSIZE_VERY_FAST)
+#define CA_ARG_SPEED_EVEN_FASTER       (CA_ARG_SPEED + STEPSIZE_EVEN_FASTER)
+#define CA_ARG_SPEED_SLOWER            (CA_ARG_SPEED + STEPSIZE_SLOWER)
+#define CA_ARG_SPEED_FASTER            (CA_ARG_SPEED + STEPSIZE_FASTER)
+#define CA_ARG_SPEED_RESET             (CA_ARG_SPEED + STEPSIZE_RESET)
 #define CA_ARG_SPEED_HEADLINE          (CA_ARG_SPEED + 999)
 #define CA_ARG_GRAVITY                 14000
 #define CA_ARG_GRAVITY_OFF             (CA_ARG_GRAVITY + 0)
 #define IS_KEYGATE(e)          HAS_PROPERTY(e, EP_KEYGATE)
 #define IS_AMOEBOID(e)         HAS_PROPERTY(e, EP_AMOEBOID)
 #define IS_AMOEBALIVE(e)       HAS_PROPERTY(e, EP_AMOEBALIVE)
-#define HAS_CONTENT(e)         HAS_PROPERTY(e, EP_HAS_CONTENT)
+#define HAS_EDITOR_CONTENT(e)  HAS_PROPERTY(e, EP_HAS_EDITOR_CONTENT)
 #define CAN_TURN_EACH_MOVE(e)  HAS_PROPERTY(e, EP_CAN_TURN_EACH_MOVE)
 #define CAN_GROW(e)            HAS_PROPERTY(e, EP_CAN_GROW)
 #define IS_ACTIVE_BOMB(e)      HAS_PROPERTY(e, EP_ACTIVE_BOMB)
 #define MAX_CHANGE_PAGES       32
 #define MIN_ELEMENTS_IN_GROUP  1
 #define MAX_ELEMENTS_IN_GROUP  16
+#define MIN_ANDROID_ELEMENTS   1
+#define MAX_ANDROID_ELEMENTS   16
 
 /* values for elements with content */
 #define MIN_ELEMENT_CONTENTS   1
@@ -1910,13 +1924,18 @@ struct LevelInfo
   struct Content ball_content[MAX_ELEMENT_CONTENTS];
   int num_ball_contents;
 
+#if 0
   boolean android_array[16];
 #endif
+  int num_android_clone_elements;
+  int android_clone_element[MAX_ANDROID_ELEMENTS];
+#endif
 
   int can_move_into_acid_bits; /* bitfield to store property for elements */
   int dont_collide_with_bits;  /* bitfield to store property for elements */
 
-  boolean double_speed;
+  int initial_player_stepsize; /* initial player speed */
+
   boolean initial_gravity;
   boolean em_slippery_gems;    /* EM style "gems slip from wall" behaviour */
   boolean use_spring_bug;      /* for compatibility with old levels */