Mercurial > hg > openttd
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); }