rnd-20070120-1-src
[rocksndiamonds.git] / src / main.h
index 2e79faacf4eeae45fecc32e22bfc199f5ae19610..19b7322f27075b9f1a90203908f5eeab0ece330c 100644 (file)
@@ -34,7 +34,7 @@
 #define IMG_SP_EMPTY                   IMG_SP_EMPTY_SPACE
 #define IMG_EXPLOSION                  IMG_DEFAULT_EXPLODING
 #define IMG_CHAR_START                 IMG_CHAR_SPACE
-#define IMG_STEELCHAR_START            IMG_STEELCHAR_SPACE
+#define IMG_STEEL_CHAR_START           IMG_STEEL_CHAR_SPACE
 #define IMG_CUSTOM_START               IMG_CUSTOM_1
 
 #define SND_UNDEFINED                  (-1)
 #define SCREENY(a)                     ((a) - scroll_y)
 #define LEVELX(a)                      ((a) + scroll_x)
 #define LEVELY(a)                      ((a) + scroll_y)
-#define IN_VIS_FIELD(x,y) ((x)>=0 && (x)<SCR_FIELDX && (y)>=0 &&(y)<SCR_FIELDY)
-#define IN_SCR_FIELD(x,y) ((x)>=BX1 && (x)<=BX2 && (y)>=BY1 &&(y)<=BY2)
-#define IN_LEV_FIELD(x,y) ((x)>=0 && (x)<lev_fieldx && (y)>=0 &&(y)<lev_fieldy)
+
+#define IN_FIELD(x, y, xsize, ysize)   ((x) >= 0 && (x) < (xsize) &&      \
+                                        (y) >= 0 && (y) < (ysize))
+#define IN_FIELD_MINMAX(x, y, xmin, ymin, xmax, ymax)                     \
+                                       ((x) >= (xmin) && (x) <= (xmax) && \
+                                        (y) >= (ymin) && (y) <= (ymax))
+
+#define IN_VIS_FIELD(x, y)             IN_FIELD(x, y, SCR_FIELDX, SCR_FIELDY)
+#define IN_LEV_FIELD(x, y)             IN_FIELD(x, y, lev_fieldx, lev_fieldy)
+#define IN_SCR_FIELD(x, y)             IN_FIELD_MINMAX(x,y, BX1,BY1, BX2,BY2)
 
 /* values for configurable properties (custom elem's only, else pre-defined) */
 #define EP_DIGGABLE                    0
 #define EL_NEXT_CE_8                   730
 #define EL_ANY_ELEMENT                 731
 
-#define EL_STEELCHAR_START             732
-#define EL_STEELCHAR_ASCII0            (EL_STEELCHAR_START  - 32)
-#define EL_STEELCHAR_ASCII0_START      (EL_STEELCHAR_ASCII0 + 32)
+#define EL_STEEL_CHAR_START            732
+#define EL_STEEL_CHAR_ASCII0           (EL_STEEL_CHAR_START  - 32)
+#define EL_STEEL_CHAR_ASCII0_START     (EL_STEEL_CHAR_ASCII0 + 32)
 
 /* (auto-generated data structure definitions included with normal chars) */
 
-#define EL_STEELCHAR_ASCII0_END                (EL_STEELCHAR_ASCII0 + 111)
-#define EL_STEELCHAR_END               (EL_STEELCHAR_START  + 79)
+#define EL_STEEL_CHAR_ASCII0_END       (EL_STEEL_CHAR_ASCII0 + 111)
+#define EL_STEEL_CHAR_END              (EL_STEEL_CHAR_START  + 79)
 
-#define EL_STEELCHAR(c)                        (EL_STEELCHAR_ASCII0 +MAP_FONT_ASCII(c))
+#define EL_STEEL_CHAR(c)               (EL_STEEL_CHAR_ASCII0+MAP_FONT_ASCII(c))
 
 #define EL_SPERMS                      812
 #define EL_BULLET                      813
 #define EL_STEEL_EXIT_CLOSED           822
 #define EL_STEEL_EXIT_OPEN             823
 
-#define NUM_FILE_ELEMENTS              824
+#define EL_DC_STEELWALL_1_LEFT         824
+#define EL_DC_STEELWALL_1_RIGHT                825
+#define EL_DC_STEELWALL_1_TOP          826
+#define EL_DC_STEELWALL_1_BOTTOM       827
+#define EL_DC_STEELWALL_1_HORIZONTAL   828
+#define EL_DC_STEELWALL_1_VERTICAL     829
+#define EL_DC_STEELWALL_1_TOPLEFT      830
+#define EL_DC_STEELWALL_1_TOPRIGHT     831
+#define EL_DC_STEELWALL_1_BOTTOMLEFT   832
+#define EL_DC_STEELWALL_1_BOTTOMRIGHT  833
+#define EL_DC_STEELWALL_1_TOPLEFT_2    834
+#define EL_DC_STEELWALL_1_TOPRIGHT_2   835
+#define EL_DC_STEELWALL_1_BOTTOMLEFT_2 836
+#define EL_DC_STEELWALL_1_BOTTOMRIGHT_2        837
+
+#define EL_DC_STEELWALL_2_LEFT         838
+#define EL_DC_STEELWALL_2_RIGHT                839
+#define EL_DC_STEELWALL_2_TOP          840
+#define EL_DC_STEELWALL_2_BOTTOM       841
+#define EL_DC_STEELWALL_2_HORIZONTAL   842
+#define EL_DC_STEELWALL_2_VERTICAL     843
+#define EL_DC_STEELWALL_2_MIDDLE       844
+#define EL_DC_STEELWALL_2_SINGLE       845
+
+#define EL_DC_SWITCHGATE_SWITCH_UP     846
+#define EL_DC_SWITCHGATE_SWITCH_DOWN   847
+#define EL_DC_TIMEGATE_SWITCH          848
+#define EL_DC_TIMEGATE_SWITCH_ACTIVE   849
+
+#define EL_DC_LANDMINE                 850
+
+#define EL_EXPANDABLE_STEELWALL                   851
+#define EL_EXPANDABLE_STEELWALL_HORIZONTAL 852
+#define EL_EXPANDABLE_STEELWALL_VERTICAL   853
+#define EL_EXPANDABLE_STEELWALL_ANY       854
+
+#define EL_EM_EXIT_CLOSED              855
+#define EL_EM_EXIT_OPEN                        856
+#define EL_EM_STEEL_EXIT_CLOSED                857
+#define EL_EM_STEEL_EXIT_OPEN          858
+
+#define NUM_FILE_ELEMENTS              859
 
 
 /* "real" (and therefore drawable) runtime elements */
 #define EL_EXIT_CLOSING                        (EL_FIRST_RUNTIME_REAL + 27)
 #define EL_STEEL_EXIT_OPENING          (EL_FIRST_RUNTIME_REAL + 28)
 #define EL_STEEL_EXIT_CLOSING          (EL_FIRST_RUNTIME_REAL + 29)
-#define EL_SP_EXIT_OPENING             (EL_FIRST_RUNTIME_REAL + 30)
-#define EL_SP_EXIT_CLOSING             (EL_FIRST_RUNTIME_REAL + 31)
-#define EL_SP_EXIT_OPEN                        (EL_FIRST_RUNTIME_REAL + 32)
-#define EL_SP_TERMINAL_ACTIVE          (EL_FIRST_RUNTIME_REAL + 33)
-#define EL_SP_BUGGY_BASE_ACTIVATING    (EL_FIRST_RUNTIME_REAL + 34)
-#define EL_SP_BUGGY_BASE_ACTIVE                (EL_FIRST_RUNTIME_REAL + 35)
-#define EL_SP_MURPHY_CLONE             (EL_FIRST_RUNTIME_REAL + 36)
-#define EL_AMOEBA_DROPPING             (EL_FIRST_RUNTIME_REAL + 37)
-#define EL_QUICKSAND_EMPTYING          (EL_FIRST_RUNTIME_REAL + 38)
-#define EL_MAGIC_WALL_ACTIVE           (EL_FIRST_RUNTIME_REAL + 39)
-#define EL_BD_MAGIC_WALL_ACTIVE                (EL_FIRST_RUNTIME_REAL + 40)
-#define EL_MAGIC_WALL_FULL             (EL_FIRST_RUNTIME_REAL + 41)
-#define EL_BD_MAGIC_WALL_FULL          (EL_FIRST_RUNTIME_REAL + 42)
-#define EL_MAGIC_WALL_EMPTYING         (EL_FIRST_RUNTIME_REAL + 43)
-#define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 44)
-#define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 45)
-#define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 46)
-#define EL_EMC_FAKE_GRASS_ACTIVE       (EL_FIRST_RUNTIME_REAL + 47)
-#define EL_GATE_1_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 48)
-#define EL_GATE_2_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 49)
-#define EL_GATE_3_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 50)
-#define EL_GATE_4_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 51)
-#define EL_EM_GATE_1_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 52)
-#define EL_EM_GATE_2_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 53)
-#define EL_EM_GATE_3_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 54)
-#define EL_EM_GATE_4_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 55)
-#define EL_EMC_GATE_5_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 56)
-#define EL_EMC_GATE_6_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 57)
-#define EL_EMC_GATE_7_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 58)
-#define EL_EMC_GATE_8_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 59)
-#define EL_EMC_DRIPPER_ACTIVE          (EL_FIRST_RUNTIME_REAL + 60)
-#define EL_EMC_SPRING_BUMPER_ACTIVE    (EL_FIRST_RUNTIME_REAL + 61)
+#define EL_EM_EXIT_OPENING             (EL_FIRST_RUNTIME_REAL + 30)
+#define EL_EM_EXIT_CLOSING             (EL_FIRST_RUNTIME_REAL + 31)
+#define EL_EM_STEEL_EXIT_OPENING       (EL_FIRST_RUNTIME_REAL + 32)
+#define EL_EM_STEEL_EXIT_CLOSING       (EL_FIRST_RUNTIME_REAL + 33)
+#define EL_SP_EXIT_OPENING             (EL_FIRST_RUNTIME_REAL + 34)
+#define EL_SP_EXIT_CLOSING             (EL_FIRST_RUNTIME_REAL + 35)
+#define EL_SP_EXIT_OPEN                        (EL_FIRST_RUNTIME_REAL + 36)
+#define EL_SP_TERMINAL_ACTIVE          (EL_FIRST_RUNTIME_REAL + 37)
+#define EL_SP_BUGGY_BASE_ACTIVATING    (EL_FIRST_RUNTIME_REAL + 38)
+#define EL_SP_BUGGY_BASE_ACTIVE                (EL_FIRST_RUNTIME_REAL + 39)
+#define EL_SP_MURPHY_CLONE             (EL_FIRST_RUNTIME_REAL + 40)
+#define EL_AMOEBA_DROPPING             (EL_FIRST_RUNTIME_REAL + 41)
+#define EL_QUICKSAND_EMPTYING          (EL_FIRST_RUNTIME_REAL + 42)
+#define EL_MAGIC_WALL_ACTIVE           (EL_FIRST_RUNTIME_REAL + 43)
+#define EL_BD_MAGIC_WALL_ACTIVE                (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_MAGIC_WALL_FULL             (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_BD_MAGIC_WALL_FULL          (EL_FIRST_RUNTIME_REAL + 46)
+#define EL_MAGIC_WALL_EMPTYING         (EL_FIRST_RUNTIME_REAL + 47)
+#define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 48)
+#define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 49)
+#define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 50)
+#define EL_EMC_FAKE_GRASS_ACTIVE       (EL_FIRST_RUNTIME_REAL + 51)
+#define EL_GATE_1_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 52)
+#define EL_GATE_2_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 53)
+#define EL_GATE_3_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 54)
+#define EL_GATE_4_GRAY_ACTIVE          (EL_FIRST_RUNTIME_REAL + 55)
+#define EL_EM_GATE_1_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 56)
+#define EL_EM_GATE_2_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 57)
+#define EL_EM_GATE_3_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 58)
+#define EL_EM_GATE_4_GRAY_ACTIVE       (EL_FIRST_RUNTIME_REAL + 59)
+#define EL_EMC_GATE_5_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 60)
+#define EL_EMC_GATE_6_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 61)
+#define EL_EMC_GATE_7_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 62)
+#define EL_EMC_GATE_8_GRAY_ACTIVE      (EL_FIRST_RUNTIME_REAL + 63)
+#define EL_EMC_DRIPPER_ACTIVE          (EL_FIRST_RUNTIME_REAL + 64)
+#define EL_EMC_SPRING_BUMPER_ACTIVE    (EL_FIRST_RUNTIME_REAL + 65)
 
 /* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 62)
+#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 66)
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
 #define EL_AMOEBA_GROWING              (EL_FIRST_RUNTIME_UNREAL + 6)
 #define EL_AMOEBA_SHRINKING            (EL_FIRST_RUNTIME_UNREAL + 7)
 #define EL_EXPANDABLE_WALL_GROWING     (EL_FIRST_RUNTIME_UNREAL + 8)
-#define EL_FLAMES                      (EL_FIRST_RUNTIME_UNREAL + 9)
-#define EL_PLAYER_IS_LEAVING           (EL_FIRST_RUNTIME_UNREAL + 10)
-#define EL_PLAYER_IS_EXPLODING_1       (EL_FIRST_RUNTIME_UNREAL + 11)
-#define EL_PLAYER_IS_EXPLODING_2       (EL_FIRST_RUNTIME_UNREAL + 12)
-#define EL_PLAYER_IS_EXPLODING_3       (EL_FIRST_RUNTIME_UNREAL + 13)
-#define EL_PLAYER_IS_EXPLODING_4       (EL_FIRST_RUNTIME_UNREAL + 14)
-#define EL_QUICKSAND_FILLING           (EL_FIRST_RUNTIME_UNREAL + 15)
-#define EL_MAGIC_WALL_FILLING          (EL_FIRST_RUNTIME_UNREAL + 16)
-#define EL_BD_MAGIC_WALL_FILLING       (EL_FIRST_RUNTIME_UNREAL + 17)
-#define EL_ELEMENT_SNAPPING            (EL_FIRST_RUNTIME_UNREAL + 18)
-#define EL_DIAGONAL_SHRINKING          (EL_FIRST_RUNTIME_UNREAL + 19)
-#define EL_DIAGONAL_GROWING            (EL_FIRST_RUNTIME_UNREAL + 20)
-
-#define NUM_RUNTIME_ELEMENTS           (EL_FIRST_RUNTIME_UNREAL + 21)
+#define EL_EXPANDABLE_STEELWALL_GROWING        (EL_FIRST_RUNTIME_UNREAL + 9)
+#define EL_FLAMES                      (EL_FIRST_RUNTIME_UNREAL + 10)
+#define EL_PLAYER_IS_LEAVING           (EL_FIRST_RUNTIME_UNREAL + 11)
+#define EL_PLAYER_IS_EXPLODING_1       (EL_FIRST_RUNTIME_UNREAL + 12)
+#define EL_PLAYER_IS_EXPLODING_2       (EL_FIRST_RUNTIME_UNREAL + 13)
+#define EL_PLAYER_IS_EXPLODING_3       (EL_FIRST_RUNTIME_UNREAL + 14)
+#define EL_PLAYER_IS_EXPLODING_4       (EL_FIRST_RUNTIME_UNREAL + 15)
+#define EL_QUICKSAND_FILLING           (EL_FIRST_RUNTIME_UNREAL + 16)
+#define EL_MAGIC_WALL_FILLING          (EL_FIRST_RUNTIME_UNREAL + 17)
+#define EL_BD_MAGIC_WALL_FILLING       (EL_FIRST_RUNTIME_UNREAL + 18)
+#define EL_ELEMENT_SNAPPING            (EL_FIRST_RUNTIME_UNREAL + 19)
+#define EL_DIAGONAL_SHRINKING          (EL_FIRST_RUNTIME_UNREAL + 20)
+#define EL_DIAGONAL_GROWING            (EL_FIRST_RUNTIME_UNREAL + 21)
+
+#define NUM_RUNTIME_ELEMENTS           (EL_FIRST_RUNTIME_UNREAL + 22)
 
 /* dummy elements (never used as game elements, only used as graphics) */
 #define EL_FIRST_DUMMY                 NUM_RUNTIME_ELEMENTS
 #define EL_INTERNAL_CASCADE_DX_ACTIVE          (EL_FIRST_INTERNAL + 19)
 #define EL_INTERNAL_CASCADE_CHARS              (EL_FIRST_INTERNAL + 20)
 #define EL_INTERNAL_CASCADE_CHARS_ACTIVE       (EL_FIRST_INTERNAL + 21)
-#define EL_INTERNAL_CASCADE_STEELCHARS         (EL_FIRST_INTERNAL + 22)
-#define EL_INTERNAL_CASCADE_STEELCHARS_ACTIVE  (EL_FIRST_INTERNAL + 23)
+#define EL_INTERNAL_CASCADE_STEEL_CHARS                (EL_FIRST_INTERNAL + 22)
+#define EL_INTERNAL_CASCADE_STEEL_CHARS_ACTIVE (EL_FIRST_INTERNAL + 23)
 #define EL_INTERNAL_CASCADE_CE                 (EL_FIRST_INTERNAL + 24)
 #define EL_INTERNAL_CASCADE_CE_ACTIVE          (EL_FIRST_INTERNAL + 25)
 #define EL_INTERNAL_CASCADE_GE                 (EL_FIRST_INTERNAL + 26)