--- a/src/unmovable_map.h Mon Mar 19 09:33:17 2007 +0000
+++ b/src/unmovable_map.h Mon Mar 19 12:38:16 2007 +0000
@@ -8,7 +8,7 @@
HQ_NUM_SIZE = 5
};
-typedef enum UnmovableType {
+enum UnmovableType {
UNMOVABLE_TRANSMITTER = 0,
UNMOVABLE_LIGHTHOUSE = 1,
UNMOVABLE_STATUE = 2,
@@ -19,7 +19,7 @@
UNMOVABLE_HQ_SOUTH = 0x83,
UNMOVABLE_HQ_END = UNMOVABLE_HQ_NORTH + HQ_NUM_SIZE * HQ_NUM_TILE
-} UnmovableType;
+};
@@ -54,6 +54,23 @@
return IS_INT_INSIDE(GetUnmovableType(t), UNMOVABLE_HQ_NORTH, UNMOVABLE_HQ_END);
}
+static inline bool IsStatue(TileIndex t)
+{
+ assert(IsTileType(t, MP_UNMOVABLE));
+ return GetUnmovableType(t) == UNMOVABLE_STATUE;
+}
+
+static inline bool IsStatueTile(TileIndex t)
+{
+ return IsTileType(t, MP_UNMOVABLE) && IsStatue(t);
+}
+
+static inline TownID GetStatueTownID(TileIndex t)
+{
+ assert(IsStatue(t));
+ return _m[t].m2;
+}
+
static inline byte GetCompanyHQSize(TileIndex t)
{
assert(IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t));
@@ -100,9 +117,10 @@
MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE);
}
-static inline void MakeStatue(TileIndex t, Owner o)
+static inline void MakeStatue(TileIndex t, Owner o, TownID town_id)
{
MakeUnmovable(t, UNMOVABLE_STATUE, o);
+ _m[t].m2 = town_id;
}
static inline void MakeOwnedLand(TileIndex t, Owner o)