Changeset - r16144:a7d2d68fd8b5
[Not reviewed]
master
0 2 0
frosch - 14 years ago 2010-09-26 11:04:30
frosch@openttd.org
(svn r20850) -Codechange: Add IndustrySpec::UsesSmoothEconomy() to deduplicate code.
2 files changed with 15 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -1572,9 +1572,7 @@ static void DoCreateNewIndustry(Industry
 
	i->production_rate[1] = indspec->production_rate[1];
 

	
 
	/* don't use smooth economy for industries using production related callbacks */
 
	if (_settings_game.economy.smooth_economy &&
 
			!(HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
 
			!(HasBit(indspec->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CHANGE))) {          // production change callbacks
 
	if (indspec->UsesSmoothEconomy()) {
 
		i->production_rate[0] = min((RandomRange(256) + 128) * i->production_rate[0] >> 8, 255);
 
		i->production_rate[1] = min((RandomRange(256) + 128) * i->production_rate[1] >> 8, 255);
 
	}
 
@@ -2232,9 +2230,7 @@ static void ChangeIndustryProduction(Ind
 
	bool suppress_message = false;
 
	bool recalculate_multipliers = false; ///< reinitialize production_rate to match prod_level
 
	/* don't use smooth economy for industries using production related callbacks */
 
	bool smooth_economy = _settings_game.economy.smooth_economy &&
 
	                      !(HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
 
	                      !(HasBit(indspec->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CHANGE));            // production change callbacks
 
	bool smooth_economy = indspec->UsesSmoothEconomy();
 
	byte div = 0;
 
	byte mul = 0;
 
	int8 increment = 0;
 
@@ -2515,6 +2511,13 @@ Money IndustrySpec::GetRemovalCost() con
 
	return (_price[PR_CLEAR_INDUSTRY] * this->removal_cost_multiplier) >> 8;
 
}
 

	
 
bool IndustrySpec::UsesSmoothEconomy() const
 
{
 
	return _settings_game.economy.smooth_economy &&
 
		!(HasBit(this->callback_mask, CBM_IND_PRODUCTION_256_TICKS) || HasBit(this->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
 
		!(HasBit(this->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(this->callback_mask, CBM_IND_PRODUCTION_CHANGE));            // production change callbacks
 
}
 

	
 
static CommandCost TerraformTile_Industry(TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new)
 
{
 
	if (AutoslopeEnabled()) {
src/industrytype.h
Show inline comments
 
@@ -153,6 +153,12 @@ struct IndustrySpec {
 
	 * @return the cost (inflation corrected etc)
 
	 */
 
	Money GetRemovalCost() const;
 

	
 
	/**
 
	 * Determines whether this industrytype uses smooth economy or whether it uses standard/newgrf production changes.
 
	 * @return true if smooth economy is used.
 
	 */
 
	bool UsesSmoothEconomy() const;
 
};
 

	
 
/**
0 comments (0 inline, 0 general)