diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 05a94d271e..98c410a550 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -29,7 +29,7 @@ #include "table/strings.h" static BuildingCounts _building_counts; -static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX]; +static std::array _class_mapping; HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID); @@ -105,6 +105,11 @@ uint32 FakeHouseResolverObject::GetDebugID() const return HouseSpec::Get(this->house_scope.house_id)->grf_prop.local_id; } +void ResetHouseClassIDs() +{ + _class_mapping = {}; +} + HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid) { /* Start from 1 because 0 means that no class has been assigned. */ diff --git a/src/newgrf_house.h b/src/newgrf_house.h index 7adea9ca6c..cd49aeca77 100644 --- a/src/newgrf_house.h +++ b/src/newgrf_house.h @@ -134,6 +134,7 @@ struct HouseClassMapping { uint8 class_id; ///< The class id within the grf file }; +void ResetHouseClassIDs(); HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid); void InitializeBuildingCounts(); diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 5540cfe9a3..dc3860dff1 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -4452,6 +4452,8 @@ HouseSpec _house_specs[NUM_HOUSES]; void ResetHouses() { + ResetHouseClassIDs(); + auto insert = std::copy(std::begin(_original_house_specs), std::end(_original_house_specs), std::begin(_house_specs)); std::fill(insert, std::end(_house_specs), HouseSpec{});