File diff r8290:b32f411ab7cc → r8291:f082c9a42b1f
src/newgrf_house.cpp
Show inline comments
 
@@ -30,27 +30,33 @@ static BuildingCounts    _building_count
 
static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX];
 

	
 
HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, HOUSE_MAX, INVALID_HOUSE_ID);
 

	
 
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;
 

	
 
		if (!IsTileType(t, MP_HOUSE)) continue;
 

	
 
		house_id = GetHouseType(t);
 
		if (!GetHouseSpecs(house_id)->enabled && house_id >= NEW_HOUSE_OFFSET) {
 
			/* The specs for this type of house are not available any more, so
 
			 * replace it with the substitute original house type. */
 
			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;
 
	}
 
}
 

	
 
HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid)
 
{
 
	/* Start from 1 because 0 means that no class has been assigned. */
 
@@ -119,28 +125,12 @@ void DecreaseBuildingCount(Town *t, Hous
 
	if (class_id == HOUSE_NO_CLASS) return;
 

	
 
	if (t->building_counts.class_count[class_id] > 0) t->building_counts.class_count[class_id]--;
 
	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;
 
	return (tile == INVALID_TILE || !IsTileType(tile, MP_HOUSE)) ? 0 : GetHouseRandomBits(tile);
 
}