src/unmovable_map.h
branchgamebalance
changeset 9895 7bd07f43b0e3
parent 5838 9c3129cb019b
child 6307 f40e88cff863
--- 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)