rnd-19990216-1
[rocksndiamonds.git] / src / main.h
index b4c3834cfdee63584c79c422157e440f0754a5f3..cb50eb5aef89c65d80e755287d037ebf2d8cef93 100644 (file)
@@ -124,6 +124,8 @@ typedef unsigned char byte;
 #define EP_BIT_HAS_CONTENT     (1 << 26)
 #define EP_BIT_EATABLE         (1 << 27)
 #define EP_BIT_SP_ELEMENT      (1 << 28)
+#define EP_BIT_QUICK_GATE      (1 << 29)
+#define EP_BIT_OVER_PLAYER     (1 << 30)
 
 #define IS_AMOEBALIVE(e)       (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE)
 #define IS_AMOEBOID(e)         (Elementeigenschaften[e] & EP_BIT_AMOEBOID)
@@ -154,6 +156,8 @@ typedef unsigned char byte;
 #define HAS_CONTENT(e)         (Elementeigenschaften[e] & EP_BIT_HAS_CONTENT)
 #define IS_EATABLE(e)          (Elementeigenschaften[e] & EP_BIT_EATABLE)
 #define IS_SP_ELEMENT(e)       (Elementeigenschaften[e] & EP_BIT_SP_ELEMENT)
+#define IS_QUICK_GATE(e)       (Elementeigenschaften[e] & EP_BIT_QUICK_GATE)
+#define IS_OVER_PLAYER(e)      (Elementeigenschaften[e] & EP_BIT_OVER_PLAYER)
 
 #define IS_PLAYER(x,y)         (ELEM_IS_PLAYER(StorePlayer[x][y]))
 
@@ -318,6 +322,8 @@ struct PlayerInfo
   boolean snapped;
 
   unsigned long move_delay;
+  int move_delay_value;
+
   int last_move_dir;
 
   unsigned long push_delay;
@@ -352,6 +358,7 @@ struct LevelInfo
   int dauer_ablenk;
   int amoebe_inhalt;
   boolean double_speed;
+  boolean gravity;
 };
 
 struct LevelDirInfo
@@ -450,7 +457,6 @@ extern int          ScreenMovDir, ScreenMovPos, ScreenGfxPos;
 extern int             BorderElement;
 extern int             GameFrameDelay;
 extern int             FfwdFrameDelay;
-extern int             MoveSpeed;
 extern int             BX1,BY1, BX2,BY2;
 extern int             SBX_Left, SBX_Right;
 extern int             SBY_Upper, SBY_Lower;
@@ -539,12 +545,12 @@ extern char               *element_info[];
 #define MICRO_GFX_PER_LINE     128
 #define HEROES_PER_LINE                16
 #define MINI_MORE_STARTX       0
-#define MINI_MORE_STARTY       224
+#define MINI_MORE_STARTY       352
 #define MICRO_MORE_STARTX      0
-#define MICRO_MORE_STARTY      336
+#define MICRO_MORE_STARTY      448
 #define MORE_PER_LINE          16
 #define MINI_MORE_PER_LINE     16
-#define MICRO_MORE_PER_LINE    16
+#define MICRO_MORE_PER_LINE    64
 #define FONT_CHARS_PER_LINE    16
 #define FONT_LINES_PER_FONT    4
 
@@ -685,7 +691,7 @@ extern char         *element_info[];
 #define EL_SCHWEIN             117
 #define EL_DRACHE              118
 
-#define EL_UNUSED_119          119
+#define EL_EM_KEY_1_FILE       119
 
 #define EL_CHAR_START          120
 #define EL_CHAR_ASCII0         (EL_CHAR_START-32)
@@ -730,13 +736,14 @@ extern char               *element_info[];
 #define EL_MAUER_Y             201
 #define EL_MAUER_XY            202
 
-#define EL_UNUSED_203          203
-#define EL_UNUSED_204          204
-#define EL_UNUSED_205          205
-#define EL_UNUSED_206          206
-#define EL_UNUSED_207          207
-#define EL_UNUSED_208          208
-#define EL_UNUSED_209          209
+#define EL_EM_GATE_1           203
+#define EL_EM_GATE_2           204
+#define EL_EM_GATE_3           205
+#define EL_EM_GATE_4           206
+
+#define EL_EM_KEY_2_FILE       207
+#define EL_EM_KEY_3_FILE       208
+#define EL_EM_KEY_4_FILE       209
 
 #define EL_SP_START            210
 #define EL_SP_EMPTY            (EL_SP_START + 0)
@@ -781,10 +788,11 @@ extern char               *element_info[];
 #define EL_SP_CHIP_LOWER       (EL_SP_START + 39)
 #define EL_SP_END              (EL_SP_START + 39)
 
-#define EL_UNUSED_250          250
-#define EL_UNUSED_251          251
-#define EL_UNUSED_252          252
-#define EL_UNUSED_253          253
+#define EL_EM_GATE_1X          250
+#define EL_EM_GATE_2X          251
+#define EL_EM_GATE_3X          252
+#define EL_EM_GATE_4X          253
+
 #define EL_UNUSED_254          254
 #define EL_UNUSED_255          255
 
@@ -798,6 +806,10 @@ extern char                *element_info[];
 #define EL_AUSGANG_ACT         306
 #define EL_SP_TERMINAL_ACTIVE  307
 #define EL_SP_BUG_ACTIVE       308
+#define EL_EM_KEY_1            309
+#define EL_EM_KEY_2            310
+#define EL_EM_KEY_3            311
+#define EL_EM_KEY_4            312
 
 /* "unreal" (and therefore not drawable) runtime elements */
 #define EL_BLOCKED             400
@@ -1109,6 +1121,19 @@ extern char              *element_info[];
 #define GFX_UNSICHTBAR         (GFX_START_ROCKSMORE +  5 * MORE_PER_LINE +  7)
 #define GFX_SP_ZONK            (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  0)
 
+#define GFX_EM_KEY_1           (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  4)
+#define GFX_EM_KEY_2           (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  5)
+#define GFX_EM_KEY_3           (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  6)
+#define GFX_EM_KEY_4           (GFX_START_ROCKSMORE +  6 * MORE_PER_LINE +  7)
+#define GFX_EM_GATE_1          (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  0)
+#define GFX_EM_GATE_2          (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  1)
+#define GFX_EM_GATE_3          (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  2)
+#define GFX_EM_GATE_4          (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  3)
+#define GFX_EM_GATE_1X         (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  4)
+#define GFX_EM_GATE_2X         (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  5)
+#define GFX_EM_GATE_3X         (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  6)
+#define GFX_EM_GATE_4X         (GFX_START_ROCKSMORE +  7 * MORE_PER_LINE +  7)
+
 #define GFX_MURPHY_GO_LEFT     (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  8)
 #define GFX_MURPHY_ANY_LEFT    (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE +  9)
 #define GFX_MURPHY_GO_RIGHT    (GFX_START_ROCKSMORE +  0 * MORE_PER_LINE + 11)