Changeset - r27889:87ac6e837ad9
[Not reviewed]
master
0 3 0
PeterN - 9 months ago 2023-09-10 17:55:37
peter1138@openttd.org
Fix: NewGRF house class mappings were not reset between games. (#11279)
3 files changed with 9 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/newgrf_house.cpp
Show inline comments
 
@@ -25,7 +25,7 @@
 
#include "safeguards.h"
 

	
 
static BuildingCounts<uint32_t> _building_counts;
 
static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX];
 
static std::array<HouseClassMapping, HOUSE_CLASS_MAX> _class_mapping;
 

	
 
HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID);
 

	
 
@@ -72,6 +72,11 @@ uint32_t HouseResolverObject::GetDebugID
 
	return HouseSpec::Get(this->house_scope.house_id)->grf_prop.local_id;
 
}
 

	
 
void ResetHouseClassIDs()
 
{
 
	_class_mapping = {};
 
}
 

	
 
HouseClassID AllocateHouseClassID(byte grf_class_id, uint32_t grfid)
 
{
 
	/* Start from 1 because 0 means that no class has been assigned. */
src/newgrf_house.h
Show inline comments
 
@@ -87,6 +87,7 @@ struct HouseClassMapping {
 
	uint8_t  class_id;  ///< The class id within the grf file
 
};
 

	
 
void ResetHouseClassIDs();
 
HouseClassID AllocateHouseClassID(byte grf_class_id, uint32_t grfid);
 

	
 
void InitializeBuildingCounts();
src/town_cmd.cpp
Show inline comments
 
@@ -3842,6 +3842,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{});
 

	
0 comments (0 inline, 0 general)