rnd-20030423-1-src
[rocksndiamonds.git] / src / main.h
index 2d5910757ccec644e94ab7e673cb12adbacf178f..f4243bf685b651c43b517eb0281993528cf8275a 100644 (file)
 #define EP_AMOEBALIVE          0
 #define EP_AMOEBOID            1
 #define EP_CAN_BE_CRUMBLED     2
-#define EP_PFORTE              3
-#define EP_SOLID               4
+#define EP_KEYGATE             3
+#define EP_HISTORIC_SOLID      4
 #define EP_INDESTRUCTIBLE      5
 #define EP_SLIPPERY            6
 #define EP_ENEMY               7
-#define EP_MAUER               8
+#define EP_HISTORIC_WALL       8
 #define EP_CAN_FALL            9
 #define EP_CAN_SMASH           10
 #define EP_CAN_CHANGE          11
 #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 EP_SP_ELEMENT          44
 #define EP_HAS_CONTENT         45
 #define EP_TUBE                        46
+#define EP_WALL                        47
 
-#define NUM_ELEMENT_PROPERTIES 47
+#define NUM_ELEMENT_PROPERTIES 48
 
 #define NUM_EP_BITFIELDS       ((NUM_ELEMENT_PROPERTIES + 31) / 32)
 #define EP_BITFIELD_BASE       0
 #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_KEYGATE(e)          HAS_PROPERTY(e, EP_KEYGATE)
+#define IS_HISTORIC_SOLID(e)   HAS_PROPERTY(e, EP_HISTORIC_SOLID)
 #define IS_INDESTRUCTIBLE(e)   HAS_PROPERTY(e, EP_INDESTRUCTIBLE)
 #define IS_SLIPPERY(e)         HAS_PROPERTY(e, EP_SLIPPERY)
 #define IS_ENEMY(e)            HAS_PROPERTY(e, EP_ENEMY)
-#define IS_MAUER(e)            HAS_PROPERTY(e, EP_MAUER)
+#define IS_HISTORIC_WALL(e)    HAS_PROPERTY(e, EP_HISTORIC_WALL)
 #define CAN_FALL(e)            HAS_PROPERTY(e, EP_CAN_FALL)
 #define CAN_SMASH(e)           HAS_PROPERTY(e, EP_CAN_SMASH)
 #define CAN_CHANGE(e)          HAS_PROPERTY(e, EP_CAN_CHANGE)
 #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 IS_SP_ELEMENT(e)       HAS_PROPERTY(e, EP_SP_ELEMENT)
 #define HAS_CONTENT(e)         HAS_PROPERTY(e, EP_HAS_CONTENT)
 #define IS_TUBE(e)             HAS_PROPERTY(e, EP_TUBE)
+#define IS_WALL(e)             HAS_PROPERTY(e, EP_WALL)
 
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&      \
                                 (e) <= EL_CUSTOM_END)
 
 #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_THROUGH(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 FONT_TEXT_2                            9
 #define FONT_TEXT_3                            10
 #define FONT_TEXT_4                            11
-#define FONT_INPUT_1                           12
-#define FONT_INPUT_1_ACTIVE                    13
-#define FONT_INPUT_2                           14
-#define FONT_INPUT_2_ACTIVE                    15
+#define FONT_INPUT_1_ACTIVE                    12
+#define FONT_INPUT_1                           13
+#define FONT_INPUT_2_ACTIVE                    14
+#define FONT_INPUT_2                           15
 #define FONT_OPTION_OFF                                16
 #define FONT_OPTION_ON                         17
 #define FONT_VALUE_1                           18
 #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.0rc7"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1203,6 +1205,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];