Handling of the economy. More...
#include "stdafx.h"
#include "company_func.h"
#include "command_func.h"
#include "industry.h"
#include "town.h"
#include "news_func.h"
#include "network/network.h"
#include "network/network_func.h"
#include "ai/ai.hpp"
#include "aircraft.h"
#include "newgrf_engine.h"
#include "engine_base.h"
#include "ground_vehicle.hpp"
#include "newgrf_cargo.h"
#include "newgrf_sound.h"
#include "newgrf_industrytiles.h"
#include "newgrf_station.h"
#include "newgrf_airporttiles.h"
#include "object.h"
#include "strings_func.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "autoreplace_func.h"
#include "company_gui.h"
#include "signs_base.h"
#include "subsidy_base.h"
#include "subsidy_func.h"
#include "station_base.h"
#include "waypoint_base.h"
#include "economy_base.h"
#include "core/pool_func.hpp"
#include "core/backup_type.hpp"
#include "cargo_type.h"
#include "water.h"
#include "game/game.hpp"
#include "cargomonitor.h"
#include "goal_base.h"
#include "story_base.h"
#include "linkgraph/refresh.h"
#include "table/strings.h"
#include "table/pricebase.h"
Go to the source code of this file.
Typedefs | |
typedef SmallVector< Industry *, 16 > | SmallIndustryList |
Functions | |
static int32 | BigMulS (const int32 a, const int32 b, const uint8 shift) |
Multiply two integer values and shift the results to right. | |
Money | CalculateCompanyValue (const Company *c, bool including_loan) |
Calculate the value of the company. | |
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 | ChangeOwnershipOfCompanyItems (Owner old_owner, Owner new_owner) |
Change the ownership of all the items of a company. | |
static void | CompanyCheckBankrupt (Company *c) |
Check for bankruptcy of a company. | |
static void | CompaniesGenStatistics () |
Update the finances of all companies. | |
bool | AddInflation (bool check_year) |
Add monthly inflation. | |
void | RecomputePrices () |
Computes all prices, payments and maximum loan. | |
static void | CompaniesPayInterest () |
Let all companies pay the monthly interest on their loan. | |
static void | HandleEconomyFluctuations () |
void | ResetPriceBaseMultipliers () |
Reset changes to the price base multipliers. | |
void | SetPriceBaseMultiplier (Price price, int factor) |
Change a price base by the given factor. | |
void | StartupIndustryDailyChanges (bool init_counter) |
Initialize the variables that will maintain the daily industry change system. | |
void | StartupEconomy () |
void | InitializeEconomy () |
Resets economy to initial values. | |
Money | GetPrice (Price index, uint cost_factor, const GRFFile *grf_file, int shift) |
Determine a certain price. | |
Money | GetTransportedGoodsIncome (uint num_pieces, uint dist, byte transit_days, CargoID cargo_type) |
static uint | DeliverGoodsToIndustry (const Station *st, CargoID cargo_type, uint num_pieces, IndustryID source) |
Transfer goods from station to industry. | |
static Money | DeliverGoods (int num_pieces, CargoID cargo_type, StationID dest, TileIndex source_tile, byte days_in_transit, Company *company, SourceType src_type, SourceID src) |
Delivers goods to industries/towns and calculates the payment. | |
static void | TriggerIndustryProduction (Industry *i) |
Inform the industry about just delivered cargo DeliverGoodsToIndustry() silently incremented incoming_cargo_waiting, now it is time to do something with the new cargo. | |
void | PrepareUnload (Vehicle *front_v) |
Prepare the vehicle to be unloaded. | |
static uint | GetLoadAmount (Vehicle *v) |
Gets the amount of cargo the given vehicle can load in the current tick. | |
static void | ReserveConsist (Station *st, Vehicle *u, CargoArray *consist_capleft, StationIDStack next_station) |
Reserves cargo if the full load order and improved_load is set or if the current order allows autorefit. | |
static bool | IsArticulatedVehicleEmpty (Vehicle *v) |
Checks whether an articulated vehicle is empty. | |
static void | HandleStationRefit (Vehicle *v, CargoArray &consist_capleft, Station *st, StationIDStack next_station, CargoID new_cid) |
Refit a vehicle in a station. | |
static void | LoadUnloadVehicle (Vehicle *front) |
Loads/unload the vehicle if possible. | |
void | LoadUnloadStation (Station *st) |
Load/unload the vehicles in this station according to the order they entered. | |
void | CompaniesMonthlyLoop () |
Monthly update of the economic data (of the companies as well as economic fluctuations). | |
static void | DoAcquireCompany (Company *c) |
int | GetAmountOwnedBy (const Company *c, Owner owner) |
CommandCost | CmdBuyShareInCompany (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Acquire shares in an opposing company. | |
CommandCost | CmdSellShareInCompany (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Sell shares in an opposing company. | |
CommandCost | CmdBuyCompany (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Buy up another company. | |
Variables | |
CargoPaymentPool | _cargo_payment_pool ("CargoPayment") |
The actual pool to store cargo payments in. | |
const ScoreInfo | _score_info [] |
Score info, values used for computing the detailed performance rating. | |
int | _score_part [MAX_COMPANIES][SCORE_END] |
Economy | _economy |
Prices | _price |
Money | _additional_cash_required |
static PriceMultipliers | _price_base_multiplier |
static SmallIndustryList | _cargo_delivery_destinations |
The industries we've currently brought cargo to. |
Handling of the economy.
Definition in file economy.cpp.
bool AddInflation | ( | bool | check_year | ) |
Add monthly inflation.
check_year | Shall the inflation get stopped after 170 years? |
Definition at line 693 of file economy.cpp.
References _cur_year, _settings_game, GameSettings::game_creation, Economy::infl_amount, Economy::infl_amount_pr, Economy::inflation_payment, Economy::inflation_prices, MAX_INFLATION, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR, and GameCreationSettings::starting_year.
Referenced by AfterLoadGame(), and CompaniesMonthlyLoop().
static int32 BigMulS | ( | const int32 | a, | |
const int32 | b, | |||
const uint8 | shift | |||
) | [inline, static] |
Multiply two integer values and shift the results to right.
This function multiplies two integer values. The result is shifted by the amount of shift to right.
a | The first integer | |
b | The second integer | |
shift | The amount to shift the value to right. |
Definition at line 72 of file economy.cpp.
Calculate the value of the company.
That is the value of all assets (vehicles, stations, etc) and money minus the loan, except when including_loan is false
which is useful when we want to calculate the value for bankruptcy.
c | the company to get the value of. | |
including_loan | include the loan in the company value. |
Definition at line 110 of file economy.cpp.
References CountBits(), CompanyProperties::current_loan, BaseStation::facilities, FOR_ALL_VEHICLES, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Aircraft::IsNormalAircraft(), max(), CompanyProperties::money, Vehicle::owner, BaseStation::owner, BaseVehicle::type, Vehicle::value, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
Referenced by CmdBuyShareInCompany(), CmdSellShareInCompany(), CompanyCheckBankrupt(), CompanyWindow::SetStringParameters(), and UpdateCompanyRatingAndValue().
Change the ownership of all the items of a company.
old_owner | The company that gets removed. | |
new_owner | The company to merge to, or INVALID_OWNER to remove the company. |
Definition at line 286 of file economy.cpp.
References _current_company, _local_company, _networking, AddTrackToSignalBuffer(), Subsidy::awarded, Vehicle::cargo_payment, Backup< T >::Change(), ChangeTileOwner(), ChangeWindowOwner(), ClearCargoDeliveryMonitoring(), ClearCargoPickupMonitoring(), ClrBit(), CMD_SELL_SHARE_IN_COMPANY, Vehicle::colourmap, StoryPage::company, Goal::company, GroupStatistics::CountEngine(), GroupStatistics::CountVehicle(), DC_BANKRUPT, DC_EXEC, DoCommand(), Town::exclusive_counter, Town::exclusivity, FOR_ALL_VEHICLES, FOR_ALL_WAYPOINTS, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetTrackBits(), HasBit(), HasSignalOnTrack(), HasSignals(), Town::have_ratings, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_OWNER, Vehicle::InvalidateNewGRFCache(), IsCompanyBuildableVehicleType(), Vehicle::IsEngineCountable(), IsLevelCrossingTile(), Vehicle::IsPrimaryVehicle(), IsTileOwner(), IsTileType(), MapSize(), MarkWholeScreenDirty(), max(), MP_RAILWAY, NetworkClientsToSpectators(), FreeUnitIDGenerator::NextID(), BaseStation::owner, CargoPayment::owner, Group::owner, Vehicle::owner, OWNER_NONE, Vehicle::Previous(), Town::ratings, RebuildSubsidisedSourceAndDestinationCache(), RemoveAllEngineReplacementForCompany(), RemoveFirstTrack(), Backup< T >::Restore(), SetBit(), SetLocalCompany(), CompanyProperties::share_owners, SubtractMoneyFromCompany(), TRACK_BIT_NONE, BaseVehicle::type, Vehicle::unitnumber, GroupStatistics::UpdateAutoreplace(), UpdateLevelCrossing(), UpdateSignalsInBuffer(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
Referenced by CmdCompanyCtrl(), and ResetLandscapeConfirmationCallback().
CommandCost CmdBuyCompany | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Buy up another company.
When a competing company is gone bankrupt you get the chance to purchase that company.
tile | unused | |
flags | type of operation | |
p1 | company to buy up | |
p2 | unused | |
text | unused |
Definition at line 1944 of file economy.cpp.
References _current_company, _local_company, _networking, CompanyProperties::bankrupt_asked, CMD_ERROR, DC_EXEC, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, and MayCompanyTakeOver().
CommandCost CmdBuyShareInCompany | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Acquire shares in an opposing company.
tile | unused | |
flags | type of operation | |
p1 | company to buy the shares from | |
p2 | unused | |
text | unused |
Definition at line 1851 of file economy.cpp.
References _cur_year, _current_company, _settings_game, CommandCost::AddCost(), EconomySettings::allow_shares, CalculateCompanyValue(), CMD_ERROR, COMPANY_SPECTATOR, CompanyAdminUpdate(), DC_EXEC, GameSettings::economy, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), CompanyProperties::inaugurated_year, InvalidateWindowData(), CompanyProperties::is_ai, MayCompanyTakeOver(), return_cmd_error, CompanyProperties::share_owners, and WC_COMPANY.
CommandCost CmdSellShareInCompany | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Sell shares in an opposing company.
tile | unused | |
flags | type of operation | |
p1 | company to sell the shares from | |
p2 | unused | |
text | unused |
Definition at line 1903 of file economy.cpp.
References _current_company, _settings_game, EconomySettings::allow_shares, CalculateCompanyValue(), CMD_ERROR, CompanyAdminUpdate(), DC_BANKRUPT, DC_EXEC, GameSettings::economy, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), InvalidateWindowData(), CompanyProperties::share_owners, and WC_COMPANY.
static void CompaniesGenStatistics | ( | ) | [static] |
Update the finances of all companies.
Pay for the stations, update the history graph, update ratings and company values, and deal with bankruptcy.
Definition at line 625 of file economy.cpp.
References _cur_month, _current_company, _settings_game, CommandCost::AddCost(), AirportMaintenanceCost(), CompanyProperties::block_preview, CanalMaintenanceCost(), Backup< T >::Change(), CompanyCheckBankrupt(), CompanyProperties::cur_economy, GameSettings::economy, EXPENSES_PROPERTY, CompanyInfrastructure::GetRailTotal(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, EconomySettings::infrastructure_maintenance, MAX_HISTORY_QUARTERS, CompanyProperties::num_valid_stat_ent, CompanyProperties::old_economy, BaseStation::owner, CompanyInfrastructure::rail, RailMaintenanceCost(), RAILTYPE_BEGIN, Backup< T >::Restore(), CompanyInfrastructure::road, RoadMaintenanceCost(), ROADTYPE_BEGIN, SetWindowDirty(), CompanyInfrastructure::signal, SignalMaintenanceCost(), CompanyInfrastructure::station, StationMaintenanceCost(), SubtractMoneyFromCompany(), UpdateCompanyRatingAndValue(), CompanyInfrastructure::water, WC_COMPANY_LEAGUE, WC_COMPANY_VALUE, WC_DELIVERED_CARGO, WC_INCOME_GRAPH, WC_OPERATING_PROFIT, and WC_PERFORMANCE_HISTORY.
Referenced by CompaniesMonthlyLoop().
static void CompaniesPayInterest | ( | ) | [static] |
Let all companies pay the monthly interest on their loan.
Definition at line 799 of file economy.cpp.
References _cur_month, _current_company, Backup< T >::Change(), CompanyProperties::current_loan, EXPENSES_LOAN_INT, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Economy::interest_rate, CompanyProperties::money, Backup< T >::Restore(), and SubtractMoneyFromCompany().
Referenced by CompaniesMonthlyLoop().
static void CompanyCheckBankrupt | ( | Company * | c | ) | [static] |
Check for bankruptcy of a company.
Called every three months.
c | Company to check. |
Definition at line 541 of file economy.cpp.
References _local_company, _network_server, _networking, CompanyProperties::bankrupt_asked, CompanyProperties::bankrupt_timeout, AI::BroadcastNewEvent(), CalculateCompanyValue(), CMD_COMPANY_CTRL, CompanyNewsInformation::company_name, CRR_BANKRUPT, CompanyProperties::current_loan, DoCommandP(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Economy::max_loan, MAX_UVALUE, CompanyProperties::money, CompanyProperties::months_of_bankruptcy, Game::NewEvent(), SetDParam(), and SetDParamStr().
Referenced by CompaniesGenStatistics().
static Money DeliverGoods | ( | int | num_pieces, | |
CargoID | cargo_type, | |||
StationID | dest, | |||
TileIndex | source_tile, | |||
byte | days_in_transit, | |||
Company * | company, | |||
SourceType | src_type, | |||
SourceID | src | |||
) | [static] |
Delivers goods to industries/towns and calculates the payment.
num_pieces | amount of cargo delivered | |
cargo_type | the type of cargo that is delivered | |
dest | Station the cargo has been unloaded | |
source_tile | The origin of the cargo for distance calculation | |
days_in_transit | Travel time | |
company | The company delivering the cargo | |
src_type | Type of source of cargo (industry, town, headquarters) | |
src | Index of source of cargo |
Definition at line 1055 of file economy.cpp.
References _settings_game, GoodsEntry::acceptance_pickup, AddCargoDelivery(), Station::always_accepted, CheckSubsidised(), CompanyProperties::cur_economy, CompanyEconomyEntry::delivered_cargo, DeliverGoodsToIndustry(), GameSettings::difficulty, DistanceManhattan(), GoodsEntry::GES_ACCEPTED_BIGTICK, GoodsEntry::GES_CURRENT_MONTH, GoodsEntry::GES_EVER_ACCEPTED, CargoSpec::Get(), SpecializedStation< Station, false >::Get(), Station::goods, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, TransportedCargoStat< Tstorage >::new_act, Town::received, SetBit(), ST_INDUSTRY, DifficultySettings::subsidy_multiplier, BaseStation::town, CargoSpec::town_effect, and BaseStation::xy.
Referenced by CargoPayment::PayFinalDelivery().
static uint DeliverGoodsToIndustry | ( | const Station * | st, | |
CargoID | cargo_type, | |||
uint | num_pieces, | |||
IndustryID | source | |||
) | [static] |
Transfer goods from station to industry.
All cargo is delivered to the nearest (Manhattan) industry to the station sign, which is inside the acceptance rectangle and actually accepts the cargo.
st | The station that accepted the cargo | |
cargo_type | Type of cargo delivered | |
num_pieces | Amount of cargo delivered | |
source | The source of the cargo |
Definition at line 1005 of file economy.cpp.
References Industry::accepts_cargo, SmallVector< T, S >::Include(), Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Station::industries_near, IndustryTemporarilyRefusesCargo(), SmallVector< T, S >::Length(), lengthof, and min().
Referenced by DeliverGoods().
static uint GetLoadAmount | ( | Vehicle * | v | ) | [static] |
Gets the amount of cargo the given vehicle can load in the current tick.
This is only about loading speed. The free capacity is ignored.
v | Vehicle to be queried. |
Definition at line 1259 of file economy.cpp.
References _settings_game, CALLBACK_FAILED, EngineInfo::callback_mask, Vehicle::cargo_type, CBID_VEHICLE_LOAD_AMOUNT, CBM_VEHICLE_LOAD_AMOUNT, CeilDiv(), EF_NO_DEFAULT_CARGO_MULTIPLIER, Vehicle::engine_type, ErrorUnknownCallbackResult(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), GB(), CargoSpec::Get(), Vehicle::GetEngine(), Engine::GetGRF(), Engine::GetGRFID(), GetVehicleCallback(), OrderSettings::gradual_loading, HasBit(), Aircraft::IsNormalAircraft(), EngineInfo::misc_flags, CargoSpec::multiplier, GameSettings::order, PROP_VEHICLE_LOAD_AMOUNT, BaseVehicle::type, and VEH_AIRCRAFT.
Referenced by LoadUnloadVehicle().
Determine a certain price.
index | Price base | |
cost_factor | Price factor | |
grf_file | NewGRF to use local price multipliers from. | |
shift | Extra bit shifting after the computation |
Definition at line 929 of file economy.cpp.
References GRFFile::price_base_multipliers.
Referenced by ObjectSpec::GetBuildCost(), ObjectSpec::GetClearCost(), Engine::GetCost(), GetRefitCost(), Train::GetRunningCost(), Ship::GetRunningCost(), RoadVehicle::GetRunningCost(), Engine::GetRunningCost(), and Aircraft::GetRunningCost().
static void HandleStationRefit | ( | Vehicle * | v, | |
CargoArray & | consist_capleft, | |||
Station * | st, | |||
StationIDStack | next_station, | |||
CargoID | new_cid | |||
) | [static] |
Refit a vehicle in a station.
v | Vehicle to be refitted. | |
consist_capleft | Added cargo capacities in the consist. | |
st | Station the vehicle is loading at. | |
next_station | Possible next stations the vehicle can travel to. | |
new_cid | Target cargo for refit. |
Definition at line 1364 of file economy.cpp.
References _current_company, _returned_refit_capacity, GoodsEntry::cargo, Vehicle::cargo, Vehicle::cargo_cap, Vehicle::cargo_type, CT_AUTO_REFIT, DC_EXEC, DC_QUERY_COST, DoCommand(), Vehicle::engine_type, Vehicle::First(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), CommandCost::GetCost(), Vehicle::GetEngine(), Vehicle::GetFirstEnginePart(), Vehicle::GetNextArticulatedPart(), Station::goods, Vehicle::HasArticulatedPart(), StationCargoList::HasCargoFor(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Aircraft::IsNormalAircraft(), Vehicle::Next(), Vehicle::owner, Vehicle::profit_this_year, VehicleCargoList::RemainingCount(), StationCargoList::Reserve(), VehicleCargoList::ReservedCount(), Backup< T >::Restore(), VehicleCargoList::Return(), VehicleCargoList::StoredCount(), CommandCost::Succeeded(), Vehicle::tile, BaseVehicle::type, VEH_AIRCRAFT, and BaseStation::xy.
Referenced by LoadUnloadVehicle().
static bool IsArticulatedVehicleEmpty | ( | Vehicle * | v | ) | [static] |
Checks whether an articulated vehicle is empty.
v | Vehicle |
Definition at line 1345 of file economy.cpp.
References Vehicle::cargo, Vehicle::GetFirstEnginePart(), Vehicle::GetNextArticulatedPart(), Vehicle::HasArticulatedPart(), and VehicleCargoList::StoredCount().
Referenced by LoadUnloadVehicle().
void LoadUnloadStation | ( | Station * | st | ) |
Load/unload the vehicles in this station according to the order they entered.
st | the station to do the loading/unloading for |
Definition at line 1751 of file economy.cpp.
References SmallVector< T, S >::Begin(), SmallVector< T, S >::Clear(), SmallVector< T, S >::End(), Vehicle::load_unload_ticks, LoadUnloadVehicle(), TriggerIndustryProduction(), Vehicle::vehstatus, VS_CRASHED, and VS_STOPPED.
static void LoadUnloadVehicle | ( | Vehicle * | front | ) | [static] |
Loads/unload the vehicle if possible.
front | the vehicle to be (un)loaded |
Definition at line 1447 of file economy.cpp.
References _cur_year, _local_company, _settings_client, _settings_game, AAT_STATION_CARGO_TAKEN, GoodsEntry::acceptance_pickup, StationCargoList::AvailableCount(), Vehicle::build_year, VehicleCache::cached_max_speed, GroundVehicleCache::cached_total_length, CalcPercentVehicleFilled(), Vehicle::cargo, GoodsEntry::cargo, Vehicle::cargo_cap, Vehicle::cargo_payment, Vehicle::cargo_type, CC_PASSENGERS, ClrBit(), COMPANY_SPECTATOR, Vehicle::cur_speed, Vehicle::current_order, BaseConsist::current_order_time, Vehicle::fill_percent_te_id, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), GoodsEntry::GES_ACCEPTANCE, SpecializedStation< Station, false >::Get(), Vehicle::GetGroundVehicleCache(), GetLoadAmount(), Order::GetLoadType(), Vehicle::GetNextStoppingStation(), Station::GetPlatformLength(), Order::GetRefitCargo(), GetStationIndex(), Order::GetUnloadType(), GetWindowClassForVehicleType(), Station::goods, OrderSettings::gradual_loading, ClientSettings::gui, HandleStationRefit(), Vehicle::HasArticulatedPart(), HasBit(), OrderSettings::improved_load, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsArticulatedVehicleEmpty(), IsCargoInClass(), Order::IsRefit(), IsTileType(), Order::IsType(), GoodsEntry::last_age, GoodsEntry::last_speed, Vehicle::last_station_visited, BaseConsist::lateness_counter, StationCargoList::Load(), Vehicle::load_unload_ticks, GUISettings::loading_indicators, Vehicle::MarkDirty(), Station::MarkTilesDirty(), max(), min(), MP_STATION, CargoList< VehicleCargoList, CargoPacketList >::MTA_DELIVER, CargoList< VehicleCargoList, CargoPacketList >::MTA_LOAD, CargoList< VehicleCargoList, CargoPacketList >::MTA_TRANSFER, Vehicle::Next(), OLFB_NO_LOAD, GameSettings::order, OUFB_TRANSFER, Vehicle::owner, Vehicle::Previous(), ReserveConsist(), LinkRefresher::Run(), SAT_CARGO_TAKEN, SAT_TRAIN_LOADS, SB(), SetBit(), CargoPayment::SetCargo(), SetWindowDirty(), ShowFillingPercent(), SRT_CARGO_TAKEN, SRT_TRAIN_LOADS, VehicleCargoList::StoredCount(), Vehicle::tile, TILE_SIZE, GoodsEntry::time_since_pickup, StationCargoList::TotalCount(), TriggerStationRandomisation(), BaseVehicle::type, UpdateFillingPercent(), Vehicle::vcache, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, BaseConsist::vehicle_flags, VF_CARGO_UNLOADING, VF_LOADING_FINISHED, VF_STOP_LOADING, Order::wait_time, WC_STATION_VIEW, WC_VEHICLE_DETAILS, Vehicle::x_pos, BaseStation::xy, Vehicle::y_pos, and Vehicle::z_pos.
Referenced by LoadUnloadStation().
void PrepareUnload | ( | Vehicle * | front_v | ) |
Prepare the vehicle to be unloaded.
curr_station | the station where the consist is at the moment | |
front_v | the vehicle to be unloaded |
Definition at line 1218 of file economy.cpp.
References GoodsEntry::acceptance_pickup, 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::list, Vehicle::load_unload_ticks, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::MAX_SIZE, Vehicle::Next(), Vehicle::orders, SetBit(), BaseConsist::vehicle_flags, VF_CARGO_UNLOADING, and VF_LOADING_FINISHED.
Referenced by Vehicle::BeginLoading().
static void ReserveConsist | ( | Station * | st, | |
Vehicle * | u, | |||
CargoArray * | consist_capleft, | |||
StationIDStack | next_station | |||
) | [static] |
Reserves cargo if the full load order and improved_load is set or if the current order allows autorefit.
st | Station where the consist is loading at the moment. | |
u | Front of the loading vehicle consist. | |
consist_capleft | If given, save free capacities after reserving there. | |
next_station | Station(s) the vehicle will stop at next. |
Definition at line 1301 of file economy.cpp.
References GoodsEntry::cargo, Vehicle::cargo, Vehicle::cargo_cap, Vehicle::cargo_type, Station::goods, HasBit(), Vehicle::Next(), VehicleCargoList::RemainingCount(), StationCargoList::Reserve(), SetBit(), and BaseStation::xy.
Referenced by LoadUnloadVehicle().
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
price | Index of price base to change. | |
factor | Amount to change by. |
Definition at line 870 of file economy.cpp.
References Clamp(), and MIN_PRICE_MODIFIER.
Referenced by FinalisePriceBaseMultipliers().
void StartupIndustryDailyChanges | ( | bool | init_counter | ) |
Initialize the variables that will maintain the daily industry change system.
init_counter | specifies if the counter is required to be initialized |
Definition at line 880 of file economy.cpp.
References Economy::industry_daily_change_counter, Economy::industry_daily_increment, MapLogX(), and MapLogY().
Referenced by Load_ECMY().
static void TriggerIndustryProduction | ( | Industry * | i | ) | [static] |
Inform the industry about just delivered cargo DeliverGoodsToIndustry() silently incremented incoming_cargo_waiting, now it is time to do something with the new cargo.
i | The industry to process |
Definition at line 1105 of file economy.cpp.
References _date, IndustrySpec::callback_mask, CBM_IND_PRODUCTION_256_TICKS, CBM_IND_PRODUCTION_CARGO_ARRIVAL, GetIndustrySpec(), HasBit(), IAT_INDUSTRY_RECEIVED_CARGO, Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INDUSTRY_TRIGGER_RECEIVED_CARGO, IndustryProductionCallback(), IndustrySpec::input_cargo_multiplier, Industry::last_cargo_accepted_at, lengthof, min(), Industry::produced_cargo_waiting, SetWindowDirty(), TriggerIndustry(), Industry::type, Industry::was_cargo_delivered, and WC_INDUSTRY_VIEW.
Referenced by LoadUnloadStation().
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)
update | the economy with calculated score | |
c | company been evaluated |
Definition at line 150 of file economy.cpp.
References Vehicle::age, CalculateCompanyValue(), Clamp(), ClampToI32(), CompanyEconomyEntry::company_value, CountBits(), CompanyProperties::current_loan, CompanyEconomyEntry::delivered_cargo, CompanyEconomyEntry::expenses, BaseStation::facilities, FOR_ALL_VEHICLES, CargoArray::GetCount(), CargoArray::GetSum(), CompanyEconomyEntry::income, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsCompanyBuildableVehicleType(), Vehicle::IsPrimaryVehicle(), CompanyProperties::location_of_HQ, max(), min(), CompanyProperties::money, ScoreInfo::needed, CompanyProperties::num_valid_stat_ent, CompanyProperties::old_economy, BaseStation::owner, Vehicle::owner, CompanyEconomyEntry::performance_history, Vehicle::profit_last_year, ScoreInfo::score, SCORE_MAX, SCORE_TOTAL, SetWindowDirty(), BaseVehicle::type, UpdateCompanyHQ(), and WC_PERFORMANCE_DETAIL.
Referenced by CmdBuildObject(), and CompaniesGenStatistics().
The industries we've currently brought cargo to.
Definition at line 994 of file economy.cpp.
CargoPaymentPool _cargo_payment_pool("CargoPayment") |
The actual pool to store cargo payments in.
const ScoreInfo _score_info[] |
{ { 120, 100}, { 80, 100}, { 10000, 100}, { 50000, 50}, { 100000, 100}, { 40000, 400}, { 8, 50}, {10000000, 50}, { 250000, 50}, { 0, 0} }
Score info, values used for computing the detailed performance rating.
Definition at line 82 of file economy.cpp.
Referenced by PerformanceRatingDetailWindow::DrawWidget().