rnd-20030421-1-src
[rocksndiamonds.git] / src / main.h
index 025e1b1c5f9266982a72c957449fe6a11543cc65..2833e094cfacf96086e69d8ae92a6e7223c1bb82 100644 (file)
@@ -64,7 +64,7 @@
 #define EP_AMOEBALIVE          0
 #define EP_AMOEBOID            1
 #define EP_CAN_BE_CRUMBLED     2
-#define EP_PFORTE              3
+
 #define EP_SOLID               4
 #define EP_INDESTRUCTIBLE      5
 #define EP_SLIPPERY            6
 #define EP_PUSHABLE            24
 #define EP_PLAYER              25
 #define EP_WALKABLE_OVER       26
-#define EP_WALKABLE_THROUGH    27
+#define EP_WALKABLE_INSIDE     27
 #define EP_WALKABLE_UNDER      28
 #define EP_PASSABLE_OVER       29
-#define EP_PASSABLE_THROUGH    30
+#define EP_PASSABLE_INSIDE     30
 #define EP_PASSABLE_UNDER      31
 
 /* values for runtime properties (non-storable) */
-#define EP_WALKABLE            32
-#define EP_PASSABLE            33
-#define EP_PLAYER_OVER         34
-#define EP_PLAYER_INSIDE       35
-#define EP_PLAYER_UNDER                36
-#define EP_DIGGABLE            37
-#define EP_COLLECTIBLE         38
-#define EP_OVER_PLAYER         39
+#define EP_ACCESSIBLE_OVER     32
+#define EP_ACCESSIBLE_INSIDE   33
+#define EP_ACCESSIBLE_UNDER    34
+#define EP_WALKABLE            35
+#define EP_PASSABLE            36
+#define EP_ACCESSIBLE          37
+#define EP_DIGGABLE            38
+#define EP_COLLECTIBLE         39
 #define EP_ACTIVE_BOMB         40
 #define EP_BELT                        41
 #define EP_BELT_ACTIVE         42
 #define IS_AMOEBALIVE(e)       HAS_PROPERTY(e, EP_AMOEBALIVE)
 #define IS_AMOEBOID(e)         HAS_PROPERTY(e, EP_AMOEBOID)
 #define CAN_BE_CRUMBLED(e)     HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED)
-#define IS_PFORTE(e)           HAS_PROPERTY(e, EP_PFORTE)
+
 #define IS_SOLID(e)            HAS_PROPERTY(e, EP_SOLID)
 #define IS_INDESTRUCTIBLE(e)   HAS_PROPERTY(e, EP_INDESTRUCTIBLE)
 #define IS_SLIPPERY(e)         HAS_PROPERTY(e, EP_SLIPPERY)
 #define IS_PUSHABLE(e)         HAS_PROPERTY(e, EP_PUSHABLE)
 #define ELEM_IS_PLAYER(e)      HAS_PROPERTY(e, EP_PLAYER)
 #define IS_WALKABLE_OVER(e)    HAS_PROPERTY(e, EP_WALKABLE_OVER)
-#define IS_WALKABLE_THROUGH(e) HAS_PROPERTY(e, EP_WALKABLE_THROUGH)
+#define IS_WALKABLE_INSIDE(e)  HAS_PROPERTY(e, EP_WALKABLE_INSIDE)
 #define IS_WALKABLE_UNDER(e)   HAS_PROPERTY(e, EP_WALKABLE_UNDER)
 #define IS_PASSABLE_OVER(e)    HAS_PROPERTY(e, EP_PASSABLE_OVER)
-#define IS_PASSABLE_THROUGH(e) HAS_PROPERTY(e, EP_PASSABLE_THROUGH)
+#define IS_PASSABLE_INSIDE(e)  HAS_PROPERTY(e, EP_PASSABLE_INSIDE)
 #define IS_PASSABLE_UNDER(e)   HAS_PROPERTY(e, EP_PASSABLE_UNDER)
 
 /* macros for runtime properties */
+#define IS_ACCESSIBLE_OVER(e)  HAS_PROPERTY(e, EP_ACCESSIBLE_OVER)
+#define IS_ACCESSIBLE_INSIDE(e)        HAS_PROPERTY(e, EP_ACCESSIBLE_INSIDE)
+#define IS_ACCESSIBLE_UNDER(e) HAS_PROPERTY(e, EP_ACCESSIBLE_UNDER)
 #define IS_WALKABLE(e)         HAS_PROPERTY(e, EP_WALKABLE)
 #define IS_PASSABLE(e)         HAS_PROPERTY(e, EP_PASSABLE)
-#define IS_PLAYER_OVER(e)      HAS_PROPERTY(e, EP_PLAYER_OVER)
-#define IS_PLAYER_INSIDE(e)    HAS_PROPERTY(e, EP_PLAYER_INSIDE)
-#define IS_PLAYER_UNDER(e)     HAS_PROPERTY(e, EP_PLAYER_UNDER)
+#define IS_ACCESSIBLE(e)       HAS_PROPERTY(e, EP_ACCESSIBLE)
 #define IS_DIGGABLE(e)         HAS_PROPERTY(e, EP_DIGGABLE)
 #define IS_COLLECTIBLE(e)      HAS_PROPERTY(e, EP_COLLECTIBLE)
-#define IS_OVER_PLAYER(e)      HAS_PROPERTY(e, EP_OVER_PLAYER)
 #define IS_ACTIVE_BOMB(e)      HAS_PROPERTY(e, EP_ACTIVE_BOMB)
 #define IS_BELT(e)             HAS_PROPERTY(e, EP_BELT)
 #define IS_BELT_ACTIVE(e)      HAS_PROPERTY(e, EP_BELT_ACTIVE)
 
 #define PLAYERINFO(x,y)                (&stored_player[StorePlayer[x][y]-EL_PLAYER_1])
 #define SHIELD_ON(p)           ((p)->shield_normal_time_left > 0)
-#define PROTECTED_FIELD(x,y)   (IS_WALKABLE_UNDER(Feld[x][y]) &&       \
+#define PROTECTED_FIELD(x,y)   (IS_ACCESSIBLE_INSIDE(Feld[x][y]) &&    \
                                 IS_INDESTRUCTIBLE(Feld[x][y]))
 #define PLAYER_PROTECTED(x,y)  (SHIELD_ON(PLAYERINFO(x, y)) ||         \
                                 PROTECTED_FIELD(x, y))
 #define EL_KEY_2                       33
 #define EL_KEY_3                       34
 #define EL_KEY_4                       35
-#define EL_GATE_1                      36
-#define EL_GATE_2                      37
-#define EL_GATE_3                      38
-#define EL_GATE_4                      39
-#define EL_GATE_1_GRAY                 40
-#define EL_GATE_2_GRAY                 41
-#define EL_GATE_3_GRAY                 42
-#define EL_GATE_4_GRAY                 43
+#define EL_GATE_1_CLOSED               36
+#define EL_GATE_2_CLOSED               37
+#define EL_GATE_3_CLOSED               38
+#define EL_GATE_4_CLOSED               39
+#define EL_GATE_1_GRAY_CLOSED          40
+#define EL_GATE_2_GRAY_CLOSED          41
+#define EL_GATE_3_GRAY_CLOSED          42
+#define EL_GATE_4_GRAY_CLOSED          43
 #define EL_DYNAMITE                    44
 #define EL_PACMAN                      45
 #define EL_INVISIBLE_WALL              46
 #define EL_EXPANDABLE_WALL_VERTICAL    201
 #define EL_EXPANDABLE_WALL_ANY         202
 
-#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_GATE_1_CLOSED            203
+#define EL_EM_GATE_2_CLOSED            204
+#define EL_EM_GATE_3_CLOSED            205
+#define EL_EM_GATE_4_CLOSED            206
 
 #define EL_EM_KEY_2_FILE                       207
 #define EL_EM_KEY_3_FILE                       208
 #define EL_SP_CHIP_BOTTOM              (EL_SP_START + 39)
 #define EL_SP_END                      (EL_SP_START + 39)
 
-#define EL_EM_GATE_1_GRAY              250
-#define EL_EM_GATE_2_GRAY              251
-#define EL_EM_GATE_3_GRAY              252
-#define EL_EM_GATE_4_GRAY              253
+#define EL_EM_GATE_1_GRAY_CLOSED       250
+#define EL_EM_GATE_2_GRAY_CLOSED       251
+#define EL_EM_GATE_3_GRAY_CLOSED       252
+#define EL_EM_GATE_4_GRAY_CLOSED       253
 
 #define EL_UNUSED_254                  254
 #define EL_UNUSED_255                  255
 #define EL_BD_MAGIC_WALL_EMPTYING      (EL_FIRST_RUNTIME_REAL + 43)
 #define EL_MAGIC_WALL_DEAD             (EL_FIRST_RUNTIME_REAL + 44)
 #define EL_BD_MAGIC_WALL_DEAD          (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_GATE_1_OPEN                 (EL_FIRST_RUNTIME_REAL + 46)
+#define EL_GATE_2_OPEN                 (EL_FIRST_RUNTIME_REAL + 47)
+#define EL_GATE_3_OPEN                 (EL_FIRST_RUNTIME_REAL + 48)
+#define EL_GATE_4_OPEN                 (EL_FIRST_RUNTIME_REAL + 49)
+#define EL_GATE_1_GRAY_OPEN            (EL_FIRST_RUNTIME_REAL + 50)
+#define EL_GATE_2_GRAY_OPEN            (EL_FIRST_RUNTIME_REAL + 51)
+#define EL_GATE_3_GRAY_OPEN            (EL_FIRST_RUNTIME_REAL + 52)
+#define EL_GATE_4_GRAY_OPEN            (EL_FIRST_RUNTIME_REAL + 53)
+#define EL_EM_GATE_1_OPEN              (EL_FIRST_RUNTIME_REAL + 54)
+#define EL_EM_GATE_2_OPEN              (EL_FIRST_RUNTIME_REAL + 55)
+#define EL_EM_GATE_3_OPEN              (EL_FIRST_RUNTIME_REAL + 56)
+#define EL_EM_GATE_4_OPEN              (EL_FIRST_RUNTIME_REAL + 57)
+#define EL_EM_GATE_1_GRAY_OPEN         (EL_FIRST_RUNTIME_REAL + 58)
+#define EL_EM_GATE_2_GRAY_OPEN         (EL_FIRST_RUNTIME_REAL + 59)
+#define EL_EM_GATE_3_GRAY_OPEN         (EL_FIRST_RUNTIME_REAL + 60)
+#define EL_EM_GATE_4_GRAY_OPEN         (EL_FIRST_RUNTIME_REAL + 61)
 
 /* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 46)
+#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 62)
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
 #define PROGRAM_VERSION_MAJOR  2
 #define PROGRAM_VERSION_MINOR  2
 #define PROGRAM_VERSION_PATCH  0
-#define PROGRAM_VERSION_STRING "2.2.0rc4"
+#define PROGRAM_VERSION_STRING "2.2.0rc6"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1203,6 +1219,7 @@ extern short                      MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short                   Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern boolean                 Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];