Changeset - r16186:88dee3f13edf
[Not reviewed]
master
0 2 0
frosch - 14 years ago 2010-10-04 19:23:50
frosch@openttd.org
(svn r20896) -Codechange: Split recompution of productionrates for non-smooth economy to separate function.
2 files changed with 17 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/industry.h
Show inline comments
 
@@ -65,6 +65,8 @@ struct Industry : IndustryPool::PoolItem
 
	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
src/industry_cmd.cpp
Show inline comments
 
@@ -2030,6 +2030,20 @@ static void UpdateIndustryStatistics(Ind
 
	}
 
}
 

	
 
/**
 
 * 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(Ind
 

	
 
	/* 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)) {
0 comments (0 inline, 0 general)