Changeset - r15788:b6c01baeb166
[Not reviewed]
master
0 3 0
rubidium - 14 years ago 2010-08-12 19:18:58
rubidium@openttd.org
(svn r20473) -Codechange: pass Town instead of TownID to BuildObject
3 files changed with 10 insertions and 11 deletions:
0 comments (0 inline, 0 general)
src/object.h
Show inline comments
 
@@ -28,11 +28,11 @@ void UpdateCompanyHQ(TileIndex tile, uin
 
 * @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. */
src/object_cmd.cpp
Show inline comments
 
@@ -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 @@ static CommandCost ClearTile_Object(Tile
 

	
 
		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 @@ static void ChangeTileOwner_Object(TileI
 
	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 @@ static void ChangeTileOwner_Object(TileI
 
			DoClearSquare(tile);
 
		}
 

	
 
		SetWindowDirty(WC_TOWN_AUTHORITY, town);
 
		SetWindowDirty(WC_TOWN_AUTHORITY, t->index);
 
	} else {
 
		DoClearSquare(tile);
 
	}
src/town_cmd.cpp
Show inline comments
 
@@ -2507,7 +2507,7 @@ static CommandCost TownActionBuildStatue
 
			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);
 
		}
0 comments (0 inline, 0 general)