changeset 15798:267cbaca43ff draft

(svn r20473) -Codechange: pass Town instead of TownID to BuildObject
author rubidium <rubidium@openttd.org>
date Thu, 12 Aug 2010 19:18:58 +0000
parents 404d3089e467
children 6925adb62597
files src/object.h src/object_cmd.cpp src/town_cmd.cpp
diffstat 3 files changed, 10 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/object.h
+++ b/src/object.h
@@ -28,11 +28,11 @@
  * @param type  The type of object to build.
  * @param tile  The tile to build the northern tile of the object on.
  * @param owner The owner of the object.
- * @param index A (generic) index to be stored on the tile, e.g. TownID for statues.
+ * @param town  Town the tile is related with.
  * @pre All preconditions for building the object at that location
  *      are met, e.g. slope and clearness of tiles are checked.
  */
-void BuildObject(ObjectType type, TileIndex tile, CompanyID owner = OWNER_NONE, uint index = 0);
+void BuildObject(ObjectType type, TileIndex tile, CompanyID owner = OWNER_NONE, struct Town *town = NULL);
 
 
 /** Various object behaviours. */
--- a/src/object_cmd.cpp
+++ b/src/object_cmd.cpp
@@ -46,14 +46,14 @@
 	return ObjectSpec::Get(GetObjectType(tile));
 }
 
-void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, uint index)
+void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town)
 {
 	const ObjectSpec *spec = ObjectSpec::Get(type);
 
 	TileArea ta(tile, GB(spec->size, 0, 4), GB(spec->size, 4, 4));
 	TILE_AREA_LOOP(t, ta) {
 		TileIndex offset = t - tile;
-		MakeObject(t, type, owner, TileY(offset) << 4 | TileX(offset), index, WATER_CLASS_INVALID);
+		MakeObject(t, type, owner, TileY(offset) << 4 | TileX(offset), town == NULL ? 0 : town->index, WATER_CLASS_INVALID);
 		MarkTileDirtyByTile(t);
 	}
 }
@@ -299,9 +299,9 @@
 
 		case OBJECT_STATUE:
 			if (flags & DC_EXEC) {
-				TownID town = GetStatueTownID(tile);
-				ClrBit(Town::Get(town)->statues, GetTileOwner(tile));
-				SetWindowDirty(WC_TOWN_AUTHORITY, town);
+				Town *t = Town::Get(GetStatueTownID(tile));
+				ClrBit(t->statues, GetTileOwner(tile));
+				SetWindowDirty(WC_TOWN_AUTHORITY, t->index);
 			}
 			break;
 
@@ -492,8 +492,7 @@
 	if (IsOwnedLand(tile) && new_owner != INVALID_OWNER) {
 		SetTileOwner(tile, new_owner);
 	} else if (IsStatueTile(tile)) {
-		TownID town = GetStatueTownID(tile);
-		Town *t = Town::Get(town);
+		Town *t = Town::Get(GetStatueTownID(tile));
 		ClrBit(t->statues, old_owner);
 		if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) {
 			/* Transfer ownership to the new company */
@@ -503,7 +502,7 @@
 			DoClearSquare(tile);
 		}
 
-		SetWindowDirty(WC_TOWN_AUTHORITY, town);
+		SetWindowDirty(WC_TOWN_AUTHORITY, t->index);
 	} else {
 		DoClearSquare(tile);
 	}
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -2507,7 +2507,7 @@
 			Backup<CompanyByte> cur_company(_current_company, OWNER_NONE, FILE_LINE);
 			DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 			cur_company.Restore();
-			BuildObject(OBJECT_STATUE, tile, _current_company, t->index);
+			BuildObject(OBJECT_STATUE, tile, _current_company, t);
 			SetBit(t->statues, _current_company); // Once found and built, "inform" the Town.
 			MarkTileDirtyByTile(tile);
 		}