Mercurial > hg > openttd
changeset 8291:690fb294ef90 draft
(svn r11855) -Fix [FS#1335]: recompute town population when removing a 'newhouses' grf, or when loading a game with missing 'newhouses' grfs
author | glx <glx@openttd.org> |
---|---|
date | Tue, 15 Jan 2008 00:03:48 +0000 |
parents | 3412cb1628bc |
children | 82cd32f1744e |
files | src/newgrf_house.cpp src/newgrf_house.h src/openttd.cpp src/town_cmd.cpp |
diffstat | 4 files changed, 11 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -33,8 +33,12 @@ void CheckHouseIDs() { + Town *town; InitializeBuildingCounts(); + /* Reset town population */ + FOR_ALL_TOWNS(town) town->population = 0; + for (TileIndex t = 0; t < MapSize(); t++) { HouseID house_id; @@ -47,7 +51,9 @@ house_id = _house_mngr.GetSubstituteID(house_id); SetHouseType(t, house_id); } - IncreaseBuildingCount(GetTownByTile(t), house_id); + town = GetTownByTile(t); + IncreaseBuildingCount(town, house_id); + if (IsHouseCompleted(t)) town->population += GetHouseSpecs(house_id)->population; } } @@ -122,22 +128,6 @@ if (_building_counts.class_count[class_id] > 0) _building_counts.class_count[class_id]--; } -/** - * AfterLoadCountBuildings() - * - * After a savegame has been loaded, count the number of buildings on the map. - */ -void AfterLoadCountBuildings() -{ - if (!_loaded_newgrf_features.has_newhouses) return; - - for (TileIndex t = 0; t < MapSize(); t++) { - if (!IsTileType(t, MP_HOUSE)) continue; - IncreaseBuildingCount(GetTownByTile(t), GetHouseType(t)); - } -} - - static uint32 HouseGetRandomBits(const ResolverObject *object) { const TileIndex tile = object->u.house.tile;
--- a/src/newgrf_house.h +++ b/src/newgrf_house.h @@ -33,7 +33,6 @@ void InitializeBuildingCounts(); void IncreaseBuildingCount(Town *t, HouseID house_id); void DecreaseBuildingCount(Town *t, HouseID house_id); -void AfterLoadCountBuildings(); void DrawNewHouseTile(TileInfo *ti, HouseID house_id); void AnimateNewHouseTile(TileIndex tile);
--- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -2018,8 +2018,8 @@ } } - /* Count the buildings after updating the map array. */ - AfterLoadCountBuildings(); + /* Check that house ids are still valid. */ + CheckHouseIDs(); if (CheckSavegameVersion(43)) { for (TileIndex t = 0; t < map_size; t++) {
--- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -2411,9 +2411,8 @@ SLE_CONDVAR(Town, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Town, xy, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Town, population, SLE_FILE_U16 | SLE_VAR_U32, 0, 2), - SLE_CONDVAR(Town, population, SLE_UINT32, 3, SL_MAX_VERSION), - + SLE_CONDNULL(2, 0, 2), + SLE_CONDNULL(4, 3, 84), SLE_VAR(Town, num_houses, SLE_UINT16), SLE_CONDVAR(Town, townnamegrfid, SLE_UINT32, 66, SL_MAX_VERSION),