OpenTTD Source: src/economy_func.h File Reference

OpenTTD Source 15.0-beta1

Functions | Variables
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 "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, CargoID cargo_type)
uint | MoveGoodsToStation (CargoID type, uint amount, SourceType source_type, SourceID source_id, 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.
int64_t | _score_part [MAX_COMPANIES][SCORE_END]
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_year | Shall the inflation get stopped after 170 years?

Returns
  true if inflation is maxed and nothing was changed

Definition at line 721 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 49 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,
|  | CargoID | cargo_type
| ) |  |

Definition at line 982 of file economy.cpp.

## ◆ InitializeEconomy()

void InitializeEconomy | ( |  | ) |

Resets economy to initial values.

Definition at line 951 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

  st | the station to do the loading/unloading for

Definition at line 1950 of file economy.cpp.

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

## ◆ MoveGoodsToStation()

uint MoveGoodsToStation | ( | CargoID | type,
|  | uint | amount,
|  | SourceType | source_type,
|  | SourceID | source_id,
|  | const StationList & | all_stations,
|  | Owner | exclusivity = `INVALID_OWNER`
| ) |  |

Definition at line 4394 of file station_cmd.cpp.

## ◆ PrepareUnload()

void PrepareUnload | ( | Vehicle * | front_v | ) |

Prepare the vehicle to be unloaded.

Parameters

  front_v | the vehicle to be unloaded

Definition at line 1278 of file economy.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargo_payment_pool >::CanAllocateItem(), GoodsEntry::cargo, Vehicle::cargo_payment, ClrBit(), Vehicle::current_order, GoodsEntry::GES_ACCEPTANCE, SpecializedStation< Station, false >::Get(), Vehicle::GetNextStoppingStation(), Order::GetUnloadType(), Station::goods, HasBit(), Vehicle::last_station_visited, Vehicle::load_unload_ticks, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::MAX_SIZE, Vehicle::Next(), Vehicle::orders, OUFB_NO_UNLOAD, SetBit(), GoodsEntry::status, BaseConsist::vehicle_flags, VF_CARGO_UNLOADING, and VF_LOADING_FINISHED.

Referenced by Vehicle::BeginLoading().

## ◆ RecomputePrices()

void RecomputePrices | ( |  | ) |

Computes all prices, payments and maximum loan.

Definition at line 759 of file economy.cpp.

References _settings_game, Clamp(), DifficultySettings::construction_cost, GameSettings::difficulty, Economy::inflation_payment, Economy::inflation_prices, InvalidateWindowData(), CargoSpec::Iterate(), LOAN_INTERVAL, Economy::max_loan, DifficultySettings::max_loan, PCAT_CONSTRUCTION, PCAT_RUNNING, SetWindowClassesDirty(), PriceBaseSpec::start_price, DifficultySettings::vehicle_costs, WC_BUILD_VEHICLE, WC_COMPANY_INFRASTRUCTURE, WC_PAYMENT_RATES, WC_REPLACE_VEHICLE, and WC_VEHICLE_DETAILS.

Referenced by InitializeWindowsAndCaches(), and ReloadNewGRFData().

## ◆ ResetPriceBaseMultipliers()

void ResetPriceBaseMultipliers | ( |  | ) |

Reset changes to the price base multipliers.

Definition at line 887 of file economy.cpp.

Referenced by ResetNewGRFData().

## ◆ ScaleByCargoScale()

uint ScaleByCargoScale | ( | uint | num,
|  | bool | town
| ) |  |
| inline

Scale a number by the cargo scale setting.

Parameters

  num | The number to scale.
  town | Are we scaling town production, or industry production?

Returns
  The number scaled by the current cargo scale setting. May be 0.

Definition at line 77 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

  num | The number to scale.
  town | Are 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 60 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

  price | Index of price base to change.
  factor | Amount to change by.

Definition at line 899 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_counter | specifies if the counter is required to be initialized

Definition at line 909 of file economy.cpp.

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

Referenced by ECMYChunkHandler::Load().

## ◆ UpdateCompanyRatingAndValue()

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)

Parameters

  update | the economy with calculated score
  c | company been evaluated

Returns
  actual score of this company

Definition at line 201 of file economy.cpp.

References _score_info, CalculateCompanyValue(), CompanyEconomyEntry::company_value, CountBits(), CompanyProperties::current_loan, CompanyEconomyEntry::delivered_cargo, CompanyEconomyEntry::expenses, CargoArray::GetCount(), CargoArray::GetSum(), CompanyEconomyEntry::income, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsCompanyBuildableVehicleType(), SpecializedStation< Station, false >::Iterate(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), CompanyProperties::location_of_HQ, CompanyProperties::money, ScoreInfo::needed, CompanyProperties::num_valid_stat_ent, CompanyProperties::old_economy, CompanyEconomyEntry::performance_history, ScoreInfo::score, SCORE_END, SCORE_MAX, SCORE_TOTAL, SetWindowDirty(), UpdateCompanyHQ(), VEHICLE_PROFIT_MIN_AGE, and WC_PERFORMANCE_DETAIL.

Referenced by CmdBuildObject(), and CompaniesGenStatistics().

## Variable Documentation

## ◆ _economy

Economy _economy
| extern

Definition at line 104 of file economy.cpp.

## ◆ _price

Prices _price
| extern

Definition at line 105 of file economy.cpp.

## ◆ _score_info

const ScoreInfo _score_info[]
| extern

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

Definition at line 90 of file economy.cpp.

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

## ◆ _score_part

int64_t _score_part[MAX_COMPANIES][SCORE_END]
| extern

Definition at line 103 of file economy.cpp.