OpenTTD Source 20250312-master-gcdcc6b491d
economy_func.h File Reference

Functions related to the economy. More...

#include "economy_type.h"
#include "station_type.h"
#include "cargo_type.h"
#include "vehicle_type.h"
#include "company_type.h"
#include "settings_type.h"
#include "source_type.h"
#include "core/random_func.hpp"

Go to the source code of this file.

Functions

void ResetPriceBaseMultipliers ()
 Reset changes to the price base multipliers.
 
void SetPriceBaseMultiplier (Price price, int factor)
 Change a price base by the given factor.
 
int UpdateCompanyRatingAndValue (Company *c, bool update)
 if update is set to true, the economy is updated with this score (also the house is updated, should only be true in the on-tick event)
 
void StartupIndustryDailyChanges (bool init_counter)
 Initialize the variables that will maintain the daily industry change system.
 
Money GetTransportedGoodsIncome (uint num_pieces, uint dist, uint16_t transit_periods, CargoType cargo_type)
 
uint MoveGoodsToStation (CargoType type, uint amount, Source source, const StationList &all_stations, Owner exclusivity=INVALID_OWNER)
 
void PrepareUnload (Vehicle *front_v)
 Prepare the vehicle to be unloaded.
 
void LoadUnloadStation (Station *st)
 Load/unload the vehicles in this station according to the order they entered.
 
Money GetPrice (Price index, uint cost_factor, const struct GRFFile *grf_file, int shift=0)
 
void InitializeEconomy ()
 Resets economy to initial values.
 
void RecomputePrices ()
 Computes all prices, payments and maximum loan.
 
bool AddInflation (bool check_year=true)
 Add monthly inflation.
 
bool EconomyIsInRecession ()
 Is the economy in recession?
 
static uint ScaleByInverseCargoScale (uint num, bool town)
 Scale a number by the inverse of the cargo scale setting, e.g.
 
uint ScaleByCargoScale (uint num, bool town)
 Scale a number by the cargo scale setting.
 

Variables

const ScoreInfo _score_info []
 Score info, values used for computing the detailed performance rating.
 
ReferenceThroughBaseContainer< std::array< std::array< int64_t, SCORE_END >, MAX_COMPANIES > > _score_part
 
Economy _economy
 
Prices _price
 

Detailed Description

Functions related to the economy.

Definition in file economy_func.h.

Function Documentation

◆ AddInflation()

bool AddInflation ( bool  check_year)

Add monthly inflation.

Parameters
check_yearShall the inflation get stopped after 170 years?
Returns
true if inflation is maxed and nothing was changed

Definition at line 707 of file economy.cpp.

References Economy::infl_amount, Economy::infl_amount_pr, Economy::inflation_payment, Economy::inflation_prices, MAX_INFLATION, and TimerGameConst< struct Calendar >::ORIGINAL_MAX_YEAR.

Referenced by AfterLoadGame().

◆ EconomyIsInRecession()

bool EconomyIsInRecession ( )
inline

Is the economy in recession?

Returns
True if economy is in recession, false otherwise.

Definition at line 50 of file economy_func.h.

References Economy::fluct.

Referenced by TownGenerateCargo(), TransportIndustryGoods(), and IndustryBuildData::TryBuildNewIndustry().

◆ GetTransportedGoodsIncome()

Money GetTransportedGoodsIncome ( uint  num_pieces,
uint  dist,
uint16_t  transit_periods,
CargoType  cargo_type 
)

Definition at line 968 of file economy.cpp.

◆ InitializeEconomy()

void InitializeEconomy ( )

Resets economy to initial values.

Definition at line 937 of file economy.cpp.

References ClearCargoDeliveryMonitoring(), ClearCargoPickupMonitoring(), Economy::inflation_payment, and Economy::inflation_prices.

◆ LoadUnloadStation()

void LoadUnloadStation ( Station st)

Load/unload the vehicles in this station according to the order they entered.

Parameters
stthe station to do the loading/unloading for

Definition at line 1935 of file economy.cpp.

References _cargo_delivery_destinations, LoadUnloadVehicle(), and TriggerIndustryProduction().

◆ MoveGoodsToStation()

uint MoveGoodsToStation ( CargoType  type,
uint  amount,
Source  source,
const StationList all_stations,
Owner  exclusivity = INVALID_OWNER 
)

Definition at line 4391 of file station_cmd.cpp.

◆ PrepareUnload()

◆ RecomputePrices()

◆ ResetPriceBaseMultipliers()

void ResetPriceBaseMultipliers ( )

Reset changes to the price base multipliers.

Definition at line 873 of file economy.cpp.

Referenced by ResetNewGRFData().

◆ ScaleByCargoScale()

uint ScaleByCargoScale ( uint  num,
bool  town 
)
inline

Scale a number by the cargo scale setting.

Parameters
numThe number to scale.
townAre we scaling town production, or industry production?
Returns
The number scaled by the current cargo scale setting. May be 0.

Definition at line 78 of file economy_func.h.

References _settings_game, Chance16(), GameSettings::economy, EconomySettings::industry_cargo_scale, ScaleByInverseCargoScale(), and EconomySettings::town_cargo_scale.

Referenced by ChopLumberMillTrees(), DoCreateNewIndustry(), ProduceIndustryGoodsHelper(), TownGenerateCargo(), and UpdateTownMaxPass().

◆ ScaleByInverseCargoScale()

static uint ScaleByInverseCargoScale ( uint  num,
bool  town 
)
static

Scale a number by the inverse of the cargo scale setting, e.g.

a scale of 25% multiplies the number by 4.

Parameters
numThe number to scale.
townAre we scaling town production, or industry production?
Returns
The number scaled by the inverse of the cargo scale setting, minimum of 1.

Definition at line 61 of file economy_func.h.

References _settings_game, GameSettings::economy, EconomySettings::industry_cargo_scale, and EconomySettings::town_cargo_scale.

Referenced by ScaleByCargoScale().

◆ SetPriceBaseMultiplier()

void SetPriceBaseMultiplier ( Price  price,
int  factor 
)

Change a price base by the given factor.

The price base is altered by factors of two. NewBaseCost = OldBaseCost * 2^n

Parameters
priceIndex of price base to change.
factorAmount to change by.

Definition at line 885 of file economy.cpp.

References Clamp(), and MIN_PRICE_MODIFIER.

Referenced by FinalisePriceBaseMultipliers().

◆ StartupIndustryDailyChanges()

void StartupIndustryDailyChanges ( bool  init_counter)

Initialize the variables that will maintain the daily industry change system.

Parameters
init_counterspecifies if the counter is required to be initialized

Definition at line 895 of file economy.cpp.

References Economy::industry_daily_change_counter, Economy::industry_daily_increment, Map::LogX(), and Map::LogY().

Referenced by ECMYChunkHandler::Load().

◆ UpdateCompanyRatingAndValue()

Variable Documentation

◆ _economy

Economy _economy
extern

Definition at line 105 of file economy.cpp.

◆ _price

Prices _price
extern

Definition at line 106 of file economy.cpp.

◆ _score_info

const ScoreInfo _score_info[]
extern

Score info, values used for computing the detailed performance rating.

Definition at line 91 of file economy.cpp.

Referenced by PerformanceRatingDetailWindow::DrawWidget(), and UpdateCompanyRatingAndValue().

◆ _score_part

ReferenceThroughBaseContainer<std::array<std::array<int64_t, SCORE_END>, MAX_COMPANIES> > _score_part
extern

Definition at line 104 of file economy.cpp.