mirror of https://github.com/OpenTTD/OpenTTD
(svn r20896) -Codechange: Split recompution of productionrates for non-smooth economy to separate function.
parent
a0a51c2ac1
commit
7f060bdaf5
|
@ -65,6 +65,8 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> {
|
|||
Industry(TileIndex tile = INVALID_TILE) : location(tile, 0, 0) {}
|
||||
~Industry();
|
||||
|
||||
void RecomputeProductionMultipliers();
|
||||
|
||||
/**
|
||||
* Get the industry of the given tile
|
||||
* @param tile the tile to get the industry from
|
||||
|
|
|
@ -2030,6 +2030,20 @@ static void UpdateIndustryStatistics(Industry *i)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Recompute #production_rate for current #prod_level.
|
||||
* This function is only valid when not using smooth economy.
|
||||
*/
|
||||
void Industry::RecomputeProductionMultipliers()
|
||||
{
|
||||
const IndustrySpec *indspec = GetIndustrySpec(this->type);
|
||||
assert(!indspec->UsesSmoothEconomy());
|
||||
|
||||
/* Rates are rounded up, so e.g. oilrig always produces some passengers */
|
||||
this->production_rate[0] = min(CeilDiv(indspec->production_rate[0] * this->prod_level, PRODLEVEL_DEFAULT), 0xFF);
|
||||
this->production_rate[1] = min(CeilDiv(indspec->production_rate[1] * this->prod_level, PRODLEVEL_DEFAULT), 0xFF);
|
||||
}
|
||||
|
||||
/** Simple helper that will collect data for the generation of industries */
|
||||
struct ProbabilityHelper {
|
||||
uint16 prob; ///< probability
|
||||
|
@ -2371,11 +2385,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
|||
|
||||
/* Recalculate production_rate
|
||||
* For non-smooth economy these should always be synchronized with prod_level */
|
||||
if (recalculate_multipliers) {
|
||||
/* Rates are rounded up, so e.g. oilrig always produces some passengers */
|
||||
i->production_rate[0] = min(CeilDiv(indspec->production_rate[0] * i->prod_level, PRODLEVEL_DEFAULT), 0xFF);
|
||||
i->production_rate[1] = min(CeilDiv(indspec->production_rate[1] * i->prod_level, PRODLEVEL_DEFAULT), 0xFF);
|
||||
}
|
||||
if (recalculate_multipliers) i->RecomputeProductionMultipliers();
|
||||
|
||||
/* Close if needed and allowed */
|
||||
if (closeit && !CheckIndustryCloseDownProtection(i->type)) {
|
||||
|
|
Loading…
Reference in New Issue