OpenTTD Source 20241224-master-gf74b0cf984
company_cmd.cpp File Reference

Handling of companies. More...

#include "stdafx.h"
#include "company_base.h"
#include "company_func.h"
#include "company_gui.h"
#include "core/backup_type.hpp"
#include "town.h"
#include "news_func.h"
#include "command_func.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_base.h"
#include "network/network_admin.h"
#include "ai/ai.hpp"
#include "ai/ai_instance.hpp"
#include "ai/ai_config.hpp"
#include "company_manager_face.h"
#include "window_func.h"
#include "strings_func.h"
#include "sound_func.h"
#include "rail.h"
#include "core/pool_func.hpp"
#include "settings_func.h"
#include "vehicle_base.h"
#include "vehicle_func.h"
#include "smallmap_gui.h"
#include "game/game.hpp"
#include "goal_base.h"
#include "story_base.h"
#include "company_cmd.h"
#include "timer/timer.h"
#include "timer/timer_game_economy.h"
#include "timer/timer_game_tick.h"
#include "widgets/statusbar_widget.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

void ClearEnginesHiddenFlagOfCompany (CompanyID cid)
 Clear the 'hidden' flag for all engines of a new company.
 
void UpdateObjectColours (const Company *c)
 Updates the colour of the object whenever a company changes.
 
void SetLocalCompany (CompanyID new_company)
 Sets the local company and updates the settings that are set on a per-company basis to reflect the core's state in the GUI.
 
TextColour GetDrawStringCompanyColour (CompanyID company)
 Get the colour for DrawString-subroutines which matches the colour of the company.
 
void DrawCompanyIcon (CompanyID c, int x, int y)
 Draw the icon of a company.
 
static bool IsValidCompanyManagerFace (CompanyManagerFace cmf)
 Checks whether a company manager's face is a valid encoding.
 
void InvalidateCompanyWindows (const Company *company)
 Refresh all windows owned by a company.
 
Money GetAvailableMoney (CompanyID company)
 Get the amount of money that a company has available, or INT64_MAX if there is no such valid company.
 
Money GetAvailableMoneyForCommand ()
 This functions returns the money which can be used to execute a command.
 
bool CheckCompanyHasMoney (CommandCost &cost)
 Verify whether the company can pay the bill.
 
static void SubtractMoneyFromAnyCompany (Company *c, const CommandCost &cost)
 Deduct costs of a command from the money of a company.
 
void SubtractMoneyFromCompany (const CommandCost &cost)
 Subtract money from the _current_company, if the company is valid.
 
void SubtractMoneyFromCompanyFract (CompanyID company, const CommandCost &cst)
 Subtract money from a company, including the money fraction.
 
static constexpr void UpdateLandscapingLimit (uint32_t &limit, uint64_t per_64k_frames, uint64_t burst)
 
void UpdateLandscapingLimits ()
 Update the landscaping limits per company.
 
void SetDParamsForOwnedBy (Owner owner, TileIndex tile)
 Set the right DParams for STR_ERROR_OWNED_BY.
 
CommandCost CheckOwnership (Owner owner, TileIndex tile)
 Check whether the current owner owns something.
 
CommandCost CheckTileOwnership (TileIndex tile)
 Check whether the current owner owns the stuff on the given tile.
 
static void GenerateCompanyName (Company *c)
 Generate the name of a company from the last build coordinate.
 
static Colours GenerateCompanyColour ()
 Generate a company colour.
 
static void GeneratePresidentName (Company *c)
 Generate a random president name of a company.
 
void ResetCompanyLivery (Company *c)
 Reset the livery schemes to the company's primary colour.
 
CompanyDoStartupNewCompany (bool is_ai, CompanyID company=INVALID_COMPANY)
 Create a new company and sets all company variables default values.
 
void StartupCompanies ()
 Start of a new game.
 
void InitializeCompanies ()
 Initialize the pool of companies.
 
bool CheckTakeoverVehicleLimit (CompanyID cbig, CompanyID csmall)
 Can company cbig buy company csmall without exceeding vehicle limits?
 
static void HandleBankruptcyTakeover (Company *c)
 Handle the bankruptcy take over of a company.
 
void OnTick_Companies ()
 Called every tick for updating some company info.
 
void CompanyAdminUpdate (const Company *company)
 Called whenever company related information changes in order to notify admins.
 
void CompanyAdminRemove (CompanyID company_id, CompanyRemoveReason reason)
 Called whenever a company is removed in order to notify admins.
 
CommandCost CmdCompanyCtrl (DoCommandFlag flags, CompanyCtrlAction cca, CompanyID company_id, CompanyRemoveReason reason, ClientID client_id)
 Control the companies: add, delete, etc.
 
static bool ExecuteAllowListCtrlAction (CompanyAllowListCtrlAction action, Company *c, const std::string &public_key)
 
CommandCost CmdCompanyAllowListCtrl (DoCommandFlag flags, CompanyAllowListCtrlAction action, const std::string &public_key)
 Add or remove the given public key to the allow list of this company.
 
CommandCost CmdSetCompanyManagerFace (DoCommandFlag flags, CompanyManagerFace cmf)
 Change the company manager's face.
 
void UpdateCompanyLiveries (Company *c)
 Update liveries for a company.
 
CommandCost CmdSetCompanyColour (DoCommandFlag flags, LiveryScheme scheme, bool primary, Colours colour)
 Change the company's company-colour.
 
static bool IsUniqueCompanyName (const std::string &name)
 Is the given name in use as name of a company?
 
CommandCost CmdRenameCompany (DoCommandFlag flags, const std::string &text)
 Change the name of the company.
 
static bool IsUniquePresidentName (const std::string &name)
 Is the given name in use as president name of a company?
 
CommandCost CmdRenamePresident (DoCommandFlag flags, const std::string &text)
 Change the name of the president.
 
int CompanyServiceInterval (const Company *c, VehicleType type)
 Get the service interval for the given company and vehicle type.
 
CommandCost CmdGiveMoney (DoCommandFlag flags, Money money, CompanyID dest_company)
 Transfer funds (money) from one company to another.
 
CompanyID GetFirstPlayableCompanyID ()
 Get the index of the first available company.
 

Variables

CompanyID _local_company
 Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
 
CompanyID _current_company
 Company currently doing an action.
 
Colours _company_colours [MAX_COMPANIES]
 NOSAVE: can be determined from company structs.
 
CompanyManagerFace _company_manager_face
 for company manager face storage in openttd.cfg
 
uint _cur_company_tick_index
 used to generate a name for one company that doesn't have a name yet per tick
 
CompanyPool _company_pool ("Company")
 Pool of companies.
 
static const uint8_t _colour_sort [COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1}
 Sorting weights for the company colours.
 
static const Colours _similar_colour [COLOUR_END][2]
 Similar colours, so we can try to prevent same coloured companies.
 
TimeoutTimer< TimerGameTick_new_competitor_timeout ({ TimerGameTick::Priority::COMPETITOR_TIMEOUT, 0 }, []() { if(_game_mode==GM_MENU||!AI::CanStartNew()) return;if(_networking &&Company::GetNumItems() >=_settings_client.network.max_companies) return;uint8_t n=0;for(const Company *c :Company::Iterate()) { if(c->is_ai) n++;} if(n >=_settings_game.difficulty.max_no_competitors) return;Command< CMD_COMPANY_CTRL >::Post(CCA_NEW_AI, INVALID_COMPANY, CRR_NONE, INVALID_CLIENT_ID);})
 Start a new competitor company if possible.
 
static IntervalTimer< TimerGameEconomy_economy_companies_yearly ({TimerGameEconomy::YEAR, TimerGameEconomy::Priority::COMPANY}, [](auto) { for(Company *c :Company::Iterate()) { std::rotate(std::rbegin(c->yearly_expenses), std::rbegin(c->yearly_expenses)+1, std::rend(c->yearly_expenses));c->yearly_expenses[0]={};InvalidateWindowData(WC_FINANCES, c->index);} if(_settings_client.gui.show_finances &&_local_company !=COMPANY_SPECTATOR) { ShowCompanyFinances(_local_company);Company *c=Company::Get(_local_company);if(c->num_valid_stat_ent > 5 &&c->old_economy[0].performance_history< c->old_economy[4].performance_history) { if(_settings_client.sound.new_year) SndPlayFx(SND_01_BAD_YEAR);} else { if(_settings_client.sound.new_year) SndPlayFx(SND_00_GOOD_YEAR);} } })
 A year has passed, update the economic data of all companies, and perhaps show the financial overview window of the local company.
 

Detailed Description

Handling of companies.

Definition in file company_cmd.cpp.

Function Documentation

◆ CheckCompanyHasMoney()

bool CheckCompanyHasMoney ( CommandCost cost)

Verify whether the company can pay the bill.

Parameters
[in,out]costMoney to pay, is changed to an error if the company does not have enough money.
Returns
Function returns true if the company has enough money or infinite money is enabled, else it returns false.

Definition at line 241 of file company_cmd.cpp.

References _current_company, _settings_game, GameSettings::difficulty, CommandCost::GetCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), DifficultySettings::infinite_money, CommandCost::MakeError(), CompanyProperties::money, and SetDParam().

Referenced by CmdCloneVehicle(), CommandHelperBase::InternalDoAfter(), and CommandHelperBase::InternalExecuteValidateTestAndPrepExec().

◆ CheckOwnership()

◆ CheckTakeoverVehicleLimit()

bool CheckTakeoverVehicleLimit ( CompanyID  cbig,
CompanyID  csmall 
)

◆ CheckTileOwnership()

CommandCost CheckTileOwnership ( TileIndex  tile)

Check whether the current owner owns the stuff on the given tile.

If that isn't the case an appropriate error will be given.

Parameters
tilethe tile to check.
Returns
A succeeded command iff it's owned by the current company, else a failed command.

Definition at line 381 of file company_cmd.cpp.

References _current_company, GetTileOwner(), IsLocalCompany(), OWNER_END, and SetDParamsForOwnedBy().

Referenced by CheckAllowRemoveTunnelBridge(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildSingleRail(), CmdBuildSingleSignal(), CmdBuildTrainDepot(), CmdConvertRail(), CmdRemoveSingleRail(), CmdRemoveSingleSignal(), CmdRenameDepot(), and RemoveLock().

◆ ClearEnginesHiddenFlagOfCompany()

void ClearEnginesHiddenFlagOfCompany ( CompanyID  cid)

Clear the 'hidden' flag for all engines of a new company.

Parameters
cidCompany being created.

Definition at line 1005 of file engine.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Iterate(), and SB().

Referenced by DoStartupNewCompany().

◆ CmdCompanyAllowListCtrl()

CommandCost CmdCompanyAllowListCtrl ( DoCommandFlag  flags,
CompanyAllowListCtrlAction  action,
const std::string &  public_key 
)

Add or remove the given public key to the allow list of this company.

Parameters
flagsOperation to perform.
actionThe action to perform.
public_keyThe public key of the client to add or remove.
Returns
The cost of this operation or an error.

Definition at line 1004 of file company_cmd.cpp.

References _current_company, CALCA_ADD, CALCA_REMOVE, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), InvalidateWindowData(), NETWORK_PUBLIC_KEY_LENGTH, SetWindowDirty(), WC_CLIENT_LIST, and WC_COMPANY.

◆ CmdCompanyCtrl()

CommandCost CmdCompanyCtrl ( DoCommandFlag  flags,
CompanyCtrlAction  cca,
CompanyID  company_id,
CompanyRemoveReason  reason,
ClientID  client_id 
)

Control the companies: add, delete, etc.

Parameters
flagsoperation to perform
ccaaction to perform
company_idcompany to perform the action on
client_idClientID
Returns
the cost of this operation or an error

Definition at line 864 of file company_cmd.cpp.

References _company_manager_face, _local_company, _network_own_client_id, _network_server, _networking, AI::BroadcastNewEvent(), CCA_DELETE, CCA_NEW, CCA_NEW_AI, ChangeOwnershipOfCompanyItems(), NetworkClientInfo::client_id, NetworkClientInfo::client_playas, CloseWindowById(), CMD_ERROR, COMPANY_SPECTATOR, CompanyAdminRemove(), CRR_END, DC_EXEC, DoStartupNewCompany(), NetworkClientInfo::GetByClientID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetNumItems(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_goal_pool >::GetNumItems(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_story_page_pool >::GetNumItems(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_COMPANY, INVALID_OWNER, InvalidateWindowClassesData(), InvalidateWindowData(), CompanyProperties::is_ai, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MarkWholeScreenDirty(), MAX_COMPANIES, NetworkAdminCompanyNew(), NetworkServerNewCompany(), NetworkUpdateClientInfo(), Game::NewEvent(), SetDParam(), SetDParamStr(), SetLocalCompany(), AI::Stop(), SyncCompanySettings(), WC_CLIENT_LIST, WC_COMPANY_LEAGUE, WC_GAME_OPTIONS, WC_MAIN_TOOLBAR, WC_NETWORK_STATUS_WINDOW, WC_SCRIPT_LIST, WC_SCRIPT_SETTINGS, and WN_NETWORK_STATUS_WINDOW_JOIN.

◆ CmdGiveMoney()

CommandCost CmdGiveMoney ( DoCommandFlag  flags,
Money  money,
CompanyID  dest_company 
)

Transfer funds (money) from one company to another.

To prevent abuse in multiplayer games you can only send money to other companies if you have paid off your loan (either explicitly, or implicitly given the fact that you have more money than loan).

Parameters
flagsoperation to perform
moneythe amount of money to transfer; max 20.000.000
dest_companythe company to transfer the money to
Returns
the cost of this operation or an error

Definition at line 1296 of file company_cmd.cpp.

References _current_company, _networking, _settings_game, CMD_ERROR, CompanyProperties::current_loan, DC_EXEC, GameSettings::economy, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), CommandCost::GetCost(), GetDrawStringCompanyColour(), GetString(), EconomySettings::give_money, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), CompanyProperties::money, Backup< T >::Restore(), SetDParam(), and SubtractMoneyFromCompany().

◆ CmdRenameCompany()

CommandCost CmdRenameCompany ( DoCommandFlag  flags,
const std::string &  text 
)

Change the name of the company.

Parameters
flagsoperation to perform
textthe new name or an empty string when resetting to the default
Returns
the cost of this operation or an error

Definition at line 1169 of file company_cmd.cpp.

References _current_company, CMD_ERROR, CompanyAdminUpdate(), DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), IsUniqueCompanyName(), MarkWholeScreenDirty(), MAX_LENGTH_COMPANY_NAME_CHARS, CompanyProperties::name, and Utf8StringLength().

◆ CmdRenamePresident()

CommandCost CmdRenamePresident ( DoCommandFlag  flags,
const std::string &  text 
)

◆ CmdSetCompanyColour()

◆ CmdSetCompanyManagerFace()

CommandCost CmdSetCompanyManagerFace ( DoCommandFlag  flags,
CompanyManagerFace  cmf 
)

Change the company manager's face.

Parameters
flagsoperation to perform
cmfface bitmasked
Returns
the cost of this operation or an error

Definition at line 1037 of file company_cmd.cpp.

References _current_company, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), IsValidCompanyManagerFace(), and MarkWholeScreenDirty().

◆ CompanyAdminRemove()

void CompanyAdminRemove ( CompanyID  company_id,
CompanyRemoveReason  reason 
)

Called whenever a company is removed in order to notify admins.

Parameters
company_idThe company that was removed.
reasonThe reason the company was removed.

Definition at line 851 of file company_cmd.cpp.

References _network_server, and NetworkAdminCompanyRemove().

Referenced by CmdCompanyCtrl().

◆ CompanyAdminUpdate()

void CompanyAdminUpdate ( const Company company)

Called whenever company related information changes in order to notify admins.

Parameters
companyThe company data changed of.

Definition at line 841 of file company_cmd.cpp.

References _network_server, and NetworkAdminCompanyUpdate().

Referenced by CmdRenameCompany(), CmdRenamePresident(), CmdSetCompanyColour(), and CompanyCheckBankrupt().

◆ CompanyServiceInterval()

int CompanyServiceInterval ( const Company c,
VehicleType  type 
)

Get the service interval for the given company and vehicle type.

Parameters
cThe company, or nullptr for client-default settings.
typeThe vehicle type to get the interval for.
Returns
The service interval.

Definition at line 1248 of file company_cmd.cpp.

References _settings_client, ClientSettings::company, VehicleDefaultSettings::servint_aircraft, VehicleDefaultSettings::servint_roadveh, VehicleDefaultSettings::servint_ships, VehicleDefaultSettings::servint_trains, CompanyProperties::settings, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, and CompanySettings::vehicle.

Referenced by ChangeOwnershipOfCompanyItems(), CmdChangeServiceInt(), and UpdateAllServiceInterval().

◆ DoStartupNewCompany()

Company * DoStartupNewCompany ( bool  is_ai,
CompanyID  company = INVALID_COMPANY 
)

◆ DrawCompanyIcon()

void DrawCompanyIcon ( CompanyID  c,
int  x,
int  y 
)

◆ ExecuteAllowListCtrlAction()

static bool ExecuteAllowListCtrlAction ( CompanyAllowListCtrlAction  action,
Company c,
const std::string &  public_key 
)
static

Definition at line 983 of file company_cmd.cpp.

◆ GenerateCompanyColour()

static Colours GenerateCompanyColour ( )
static

Generate a company colour.

Returns
Generated company colour.

Definition at line 477 of file company_cmd.cpp.

References _colour_sort, _similar_colour, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and Swap().

Referenced by DoStartupNewCompany().

◆ GenerateCompanyName()

◆ GeneratePresidentName()

◆ GetAvailableMoney()

◆ GetAvailableMoneyForCommand()

Money GetAvailableMoneyForCommand ( )

This functions returns the money which can be used to execute a command.

This is either the money of the current company, or INT64_MAX if infinite money is enabled or there is no such a company "at the moment" like the server itself.

Returns
The available money of the current company or INT64_MAX

Definition at line 230 of file company_cmd.cpp.

References _current_company, and GetAvailableMoney().

Referenced by CmdBuildObjectArea(), CmdClearArea(), CmdDecreaseLoan(), CmdFoundTown(), CmdLevelLand(), and CmdRemoveLongRoad().

◆ GetDrawStringCompanyColour()

TextColour GetDrawStringCompanyColour ( CompanyID  company)

Get the colour for DrawString-subroutines which matches the colour of the company.

Parameters
companyCompany to get the colour of.
Returns
Colour of company.

Definition at line 149 of file company_cmd.cpp.

References _company_colours, GetColourGradient(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and TC_IS_PALETTE_COLOUR.

Referenced by CmdGiveMoney(), NetworkServerSendChat(), and ClientNetworkGameSocketHandler::Receive_SERVER_CHAT().

◆ GetFirstPlayableCompanyID()

CompanyID GetFirstPlayableCompanyID ( )

Get the index of the first available company.

It attempts, from first to last, and as soon as the attempt succeeds, to get the index of the company: 1st - get the first existing human company. 2nd - get the first non-existing company. 3rd - get COMPANY_FIRST.

Returns
the index of the first available company.

Definition at line 1337 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::CanAllocateItem(), COMPANY_FIRST, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::IsHumanID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and MAX_COMPANIES.

Referenced by AfterLoadGame(), NetworkOnGameStart(), and OnStartGame().

◆ HandleBankruptcyTakeover()

static void HandleBankruptcyTakeover ( Company c)
static

Handle the bankruptcy take over of a company.

Companies going bankrupt will ask the other companies in order of their performance rating, so better performing companies get the 'do you want to merge with Y' question earlier. The question will then stay till either the company has gone bankrupt or got merged with a company.

Parameters
cthe company that is going bankrupt.

Definition at line 698 of file company_cmd.cpp.

References CompanyProperties::bankrupt_asked, CompanyProperties::bankrupt_timeout, CheckTakeoverVehicleLimit(), Ticks::DAY_TICKS, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsInteractiveCompany(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), MAX_COMPANIES, MAX_UVALUE, AI::NewEvent(), CompanyProperties::old_economy, CompanyEconomyEntry::performance_history, SetBit(), and ShowBuyCompanyDialog().

Referenced by OnTick_Companies().

◆ InitializeCompanies()

void InitializeCompanies ( )

Initialize the pool of companies.

Definition at line 666 of file company_cmd.cpp.

References _cur_company_tick_index.

◆ InvalidateCompanyWindows()

void InvalidateCompanyWindows ( const Company company)

◆ IsUniqueCompanyName()

static bool IsUniqueCompanyName ( const std::string &  name)
static

Is the given name in use as name of a company?

Parameters
nameName to search.
Returns
true if the name us unique (that is, not in use), else false.

Definition at line 1154 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and CompanyProperties::name.

Referenced by CmdRenameCompany().

◆ IsUniquePresidentName()

static bool IsUniquePresidentName ( const std::string &  name)
static

Is the given name in use as president name of a company?

Parameters
nameName to search.
Returns
true if the name us unique (that is, not in use), else false.

Definition at line 1197 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and CompanyProperties::president_name.

Referenced by CmdRenamePresident().

◆ IsValidCompanyManagerFace()

static bool IsValidCompanyManagerFace ( CompanyManagerFace  cmf)
static

Checks whether a company manager's face is a valid encoding.

Unused bits are not enforced to be 0.

Parameters
cmfthe fact to check
Returns
true if and only if the face is valid

Definition at line 172 of file company_cmd.cpp.

References AreCompanyManagerFaceBitsValid(), GE_WM, GENDER_FEMALE, GetCompanyManagerFaceBits(), and HasBit().

Referenced by CmdSetCompanyManagerFace().

◆ OnTick_Companies()

◆ ResetCompanyLivery()

void ResetCompanyLivery ( Company c)

Reset the livery schemes to the company's primary colour.

This is used on loading games without livery information and on new company start up.

Parameters
cCompany to reset.

Definition at line 561 of file company_cmd.cpp.

References CompanyProperties::colour, Livery::colour1, Livery::colour2, Livery::in_use, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::Iterate().

Referenced by AfterLoadGame(), and DoStartupNewCompany().

◆ SetDParamsForOwnedBy()

void SetDParamsForOwnedBy ( Owner  owner,
TileIndex  tile 
)

Set the right DParams for STR_ERROR_OWNED_BY.

Parameters
ownerthe owner to get the name of.
tileoptional tile to get the right town.
Precondition
if tile == 0, then owner can't be OWNER_TOWN.

Definition at line 334 of file company_cmd.cpp.

References ClosestTownFromTile(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), OWNED_BY_OWNER_IN_PARAMETERS_OFFSET, OWNER_TOWN, and SetDParam().

Referenced by CheckOwnership(), CheckTileOwnership(), CmdConvertRoad(), and LandInfoWindow::OnInit().

◆ SetLocalCompany()

◆ StartupCompanies()

void StartupCompanies ( )

Start of a new game.

Definition at line 659 of file company_cmd.cpp.

References _new_competitor_timeout, and TimeoutTimer< TTimerType >::Abort().

Referenced by _GenerateWorld().

◆ SubtractMoneyFromAnyCompany()

◆ SubtractMoneyFromCompany()

◆ SubtractMoneyFromCompanyFract()

void SubtractMoneyFromCompanyFract ( CompanyID  company,
const CommandCost cst 
)

◆ UpdateCompanyLiveries()

void UpdateCompanyLiveries ( Company c)

Update liveries for a company.

This is called when the LS_DEFAULT scheme is changed, to update schemes with colours set to default.

Parameters
cCompany to update.

Definition at line 1053 of file company_cmd.cpp.

References Livery::colour1, Livery::colour2, HasBit(), Livery::in_use, and UpdateCompanyGroupLiveries().

Referenced by AfterLoadGame(), and CmdSetCompanyColour().

◆ UpdateLandscapingLimit()

static constexpr void UpdateLandscapingLimit ( uint32_t &  limit,
uint64_t  per_64k_frames,
uint64_t  burst 
)
staticconstexpr

Definition at line 312 of file company_cmd.cpp.

◆ UpdateLandscapingLimits()

◆ UpdateObjectColours()

Variable Documentation

◆ _colour_sort

const uint8_t _colour_sort[COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1}
static

Sorting weights for the company colours.

Definition at line 452 of file company_cmd.cpp.

Referenced by GenerateCompanyColour().

◆ _company_colours

Colours _company_colours[MAX_COMPANIES]

NOSAVE: can be determined from company structs.

Definition at line 54 of file company_cmd.cpp.

Referenced by CmdSetCompanyColour(), DoStartupNewCompany(), DrawCaption(), GetDrawStringCompanyColour(), and PLYRChunkHandler::Load().

◆ _company_manager_face

CompanyManagerFace _company_manager_face

for company manager face storage in openttd.cfg

Definition at line 55 of file company_cmd.cpp.

Referenced by CmdCompanyCtrl(), DoStartupNewCompany(), and SelectCompanyManagerFaceWindow::OnClick().

◆ _cur_company_tick_index

uint _cur_company_tick_index

used to generate a name for one company that doesn't have a name yet per tick

Definition at line 56 of file company_cmd.cpp.

Referenced by InitializeCompanies(), and OnTick_Companies().

◆ _current_company

CompanyID _current_company

Company currently doing an action.

Definition at line 53 of file company_cmd.cpp.

Referenced by _GenerateWorld(), Station::AddFacility(), AfterLoadGame(), AutoslopeEnabled(), BuildReplacementVehicle(), BuildStationPart(), CanBuildTramTrackOnTile(), CanRemoveRoadWithStop(), CcAI(), CcCreateGroup(), ChangeOwnershipOfCompanyItems(), ChangeTownRating(), CheckAllowRemoveRoad(), CheckAllowRemoveTunnelBridge(), CheckClearTile(), CheckCompanyHasMoney(), CheckforTownRating(), CheckIfAuthorityAllowsNewStation(), CheckIfCanLevelIndustryPlatform(), CheckIfIndustryTilesAreFree(), CheckOwnership(), CheckTileOwnership(), ClearTile_Town(), CmdAddSharedVehicleGroup(), CmdAddVehicleGroup(), CmdAlterGroup(), CmdAutoreplaceVehicle(), CmdBuildAircraft(), CmdBuildBridge(), CmdBuildCanal(), CmdBuildDock(), CmdBuildIndustry(), CmdBuildObject(), CmdBuildObjectArea(), CmdBuildRailStation(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdBuildRailWaypoint(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildRoadStop(), CmdBuildRoadVehicle(), CmdBuildRoadWaypoint(), CmdBuildShip(), CmdBuildShipDepot(), CmdBuildSingleRail(), CmdBuildSingleSignal(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdBuildVehicle(), CmdBuyCompany(), CmdChangeBankBalance(), CmdChangeCompanySetting(), CmdClearArea(), CmdCompanyAllowListCtrl(), CmdConvertRoad(), CmdCreateGoal(), CmdCreateGroup(), CmdCreateLeagueTable(), CmdCreateLeagueTableElement(), CmdCreateStoryPage(), CmdCreateStoryPageElement(), CmdCreateSubsidy(), CmdCustomNewsItem(), CmdDecreaseLoan(), CmdDeleteGroup(), CmdDepotMassAutoReplace(), CmdDepotSellAllVehicles(), CmdDoTownAction(), CmdEngineCtrl(), CmdExpandTown(), CmdFoundTown(), CmdGiveMoney(), CmdGoalQuestion(), CmdGoalQuestionAnswer(), CmdIncreaseLoan(), CmdIndustrySetExclusivity(), CmdIndustrySetFlags(), CmdIndustrySetProduction(), CmdIndustrySetText(), CmdLandscapeClear(), CmdLevelLand(), CmdMassStartStopVehicle(), CmdMoveRailVehicle(), CmdPlaceSign(), CmdPlantTree(), CmdRemoveAllVehiclesGroup(), CmdRemoveGoal(), CmdRemoveLeagueTableElement(), CmdRemoveSingleRail(), CmdRemoveSingleSignal(), CmdRemoveStoryPage(), CmdRemoveStoryPageElement(), CmdRenameCompany(), CmdRenamePresident(), CmdRenameSign(), CmdScrollViewport(), CmdSetAutoReplace(), CmdSetCompanyColour(), CmdSetCompanyManagerFace(), CmdSetCompanyMaxLoan(), CmdSetGoalCompleted(), CmdSetGoalDestination(), CmdSetGoalProgress(), CmdSetGoalText(), CmdSetGroupFlag(), CmdSetGroupLivery(), CmdSetStoryPageDate(), CmdSetStoryPageTitle(), CmdSetVehicleVisibility(), CmdShowStoryPage(), CmdStoryPageButton(), CmdTerraformLand(), CmdTownCargoGoal(), CmdTownGrowthRate(), CmdTownRating(), CmdTownSetText(), CmdUpdateLeagueTableElementData(), CmdUpdateLeagueTableElementScore(), CmdUpdateStoryPageElement(), CmdWantEnginePreview(), CompaniesGenStatistics(), CompaniesPayInterest(), CompanyCanRenameSign(), ConvertRoadTypeOwner(), CountArticulatedParts(), CreateRandomTown(), AIInstance::Died(), DoBuildLock(), DoDryUp(), DoFloodTile(), CrashLog::FillCrashLog(), ObjectPickerCallbacks::FillUsedItems(), FindJoiningBaseStation(), FloodHalftile(), AI::GameLoop(), Game::GameLoop(), ScriptInstance::GameLoop(), GetAvailableMoneyForCommand(), RefitWindow::GetCapacityString(), GetClosestDeletedStation(), GetDefaultServiceInterval(), GetFreeUnitNumber(), GetMaskOfTownActions(), GetNewEngineType(), GetRating(), AIInstance::GetSetting(), GetTileHighlightType(), VehicleScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), StationScopeResolver::GetVariable(), GrowTown(), HandleStationRefit(), AIInstance::Initialize(), CommandHelperBase::InternalExecutePrepTest(), CommandHelperBase::InternalExecuteProcessResult(), CommandHelperBase::InternalExecuteValidateTestAndPrepExec(), IsLocalCompany(), AI::IsPaused(), LiveryHelper(), CommandHelperBase::LogCommandExecution(), VideoDriver_Dedicated::MainLoop(), NetworkClientsToSpectators(), Game::NewEvent(), AI::NewEvent(), BuildVehicleWindow::OnClick(), LandInfoWindow::OnInit(), BuildIndustryWindow::OnPlaceObject(), AI::Pause(), PlaceInitialIndustry(), RemoveAirport(), RemoveBuoy(), RemoveFromRailBaseStation(), RemoveGenericRoadStop(), RemoveRailStation(), RemoveRailStation(), RemoveRailWaypoint(), RemoveRoad(), RemoveRoadStop(), RemoveRoadWaypointStop(), Game::Save(), AI::Save(), SearchLumberMillTrees(), ServiceIntervalSettingsValueText(), SetLocalCompany(), Game::StartNew(), AI::StartNew(), StateGameLoop(), AI::Stop(), SubtractMoneyFromCompany(), SyncCompanySettings(), TileLoop_Town(), TownActionAdvertiseLarge(), TownActionAdvertiseMedium(), TownActionAdvertiseSmall(), TownActionBribe(), TownActionBuildStatue(), TownActionBuyRights(), TownActionRoadRebuild(), Game::Uninitialize(), AI::Unpause(), UpdateAllServiceInterval(), ValParamRailType(), ValParamRoadType(), and VehicleEnterDepot().

◆ _local_company

CompanyID _local_company

Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.

Definition at line 52 of file company_cmd.cpp.

Referenced by _GenerateWorld(), AddNearbyStation(), AgeVehicle(), AircraftEntersTerminal(), AircraftHandleDestTooFar(), CanBuildVehicleInfrastructure(), CcStartStopVehicle(), ChangeOwnershipOfCompanyItems(), CheckOrders(), ClickChangeCompanyCheat(), CmdBuildBridge(), CmdBuyCompany(), CmdCompanyCtrl(), CmdCustomNewsItem(), CmdGoalQuestion(), CmdGoalQuestionAnswer(), CmdScrollViewport(), CmdShowStoryPage(), CompanyCheckBankrupt(), CrashAirplane(), DisableEngineForCompany(), DrawEngineList(), DrawNewObjectTileInGUI(), DrawRoadDepotSprite(), DrawRoadStopTile(), DrawStationTile(), BuildAirportWindow::DrawWidget(), ReplaceVehicleWindow::DrawWidget(), CheatWindow::DrawWidget(), EnginePreviewWindow::DrawWidget(), NewsWindow::DrawWidget(), StatusBarWindow::DrawWidget(), TownAuthorityWindow::DrawWidget(), TownDirectoryWindow::DrawWidget(), EnableEngineForCompany(), CrashLog::FillCrashLog(), StationPickerCallbacks::FillUsedItems(), WaypointPickerCallbacks::FillUsedItems(), RoadStopPickerCallbacks< roadstoptype >::FillUsedItems(), RoadWaypointPickerCallbacks::FillUsedItems(), FindStationsAroundSelection(), FindStationsNearby(), GenerateDefaultSaveName(), ReplaceVehicleWindow::GenerateLists(), ReplaceVehicleWindow::GenerateReplaceVehList(), GenerateWorld(), RefitWindow::GetCapacityString(), GetEngineLivery(), GetOrderCmdFromTile(), SmallMapWindow::GetOverlayCompanyMask(), GetRailTypeDropDownList(), HandleClickOnSign(), Vehicle::HandlePathfindingResult(), CommandHelperBase::InternalExecuteProcessResult(), InvalidateAutoreplaceWindow(), InvalidateCompanyWindows(), IsInteractiveCompany(), IsLocalCompany(), LoadUnloadVehicle(), VideoDriver_Dedicated::MainLoop(), MakeScreenshotName(), NetworkClientsToSpectators(), NetworkServerSendChat(), ReplaceVehicleWindow::OnClick(), CompanyWindow::OnClick(), GoalListWindow::OnClick(), OrdersWindow::OnClick(), StatusBarWindow::OnClick(), SelectCompanyLiveryWindow::OnDropdownSelect(), OrdersWindow::OnHotkey(), MainToolbarWindow::OnHotkey(), LandInfoWindow::OnInit(), SelectCompanyLiveryWindow::OnInvalidateData(), EnginePreviewWindow::OnInvalidateData(), GoalListWindow::OnInvalidateData(), ScriptDebugWindow::OnInvalidateData(), WaypointWindow::OnInvalidateData(), ReplaceVehicleWindow::OnPaint(), CompanyFinancesWindow::OnPaint(), SelectCompanyLiveryWindow::OnPaint(), CompanyWindow::OnPaint(), DepotWindow::OnPaint(), VehicleGroupWindow::OnPaint(), EndGameWindow::OnPaint(), OrdersWindow::OnPaint(), StationViewWindow::OnPaint(), TimetableWindow::OnPaint(), MainToolbarWindow::OnPaint(), TownAuthorityWindow::OnPaint(), VehicleListWindow::OnPaint(), VehicleViewWindow::OnPaint(), SignList::OwnerVisibilityFilter(), PopupMainCompanyToolbMenu(), Vehicle::PreDestructor(), RoadVehArrivesAt(), SaveHighScoreValueNetwork(), SetDefaultRailGui(), SetLocalCompany(), SetSettingValue(), ReplaceVehicleWindow::SetStringParameters(), BuildVehicleWindow::SetStringParameters(), CompanyFinancesWindow::SetupWidgets(), ShipArrivesAt(), ShowBuildAirToolbar(), ShowBuildDocksToolbar(), ShowBuildRailToolbar(), ShowBuildRoadToolbar(), ShowEndGameChart(), ShowTerraformToolbar(), SyncCompanySettings(), TownDirectoryWindow::TownRatingSorter(), TrainEnterStation(), UpdateStationAcceptance(), VehicleEnterDepot(), and WhoCanServiceIndustry().

◆ _similar_colour

const Colours _similar_colour[COLOUR_END][2]
static
Initial value:
= {
{ COLOUR_BLUE, COLOUR_LIGHT_BLUE },
{ COLOUR_GREEN, COLOUR_DARK_GREEN },
{ INVALID_COLOUR, INVALID_COLOUR },
{ COLOUR_ORANGE, INVALID_COLOUR },
{ INVALID_COLOUR, INVALID_COLOUR },
{ COLOUR_DARK_BLUE, COLOUR_BLUE },
{ COLOUR_PALE_GREEN, COLOUR_DARK_GREEN },
{ COLOUR_PALE_GREEN, COLOUR_GREEN },
{ COLOUR_DARK_BLUE, COLOUR_LIGHT_BLUE },
{ COLOUR_BROWN, COLOUR_ORANGE },
{ COLOUR_PURPLE, INVALID_COLOUR },
{ COLOUR_MAUVE, INVALID_COLOUR },
{ COLOUR_YELLOW, COLOUR_CREAM },
{ COLOUR_CREAM, INVALID_COLOUR },
{ COLOUR_WHITE, INVALID_COLOUR },
{ COLOUR_GREY, INVALID_COLOUR },
}

Similar colours, so we can try to prevent same coloured companies.

Definition at line 454 of file company_cmd.cpp.

Referenced by GenerateCompanyColour().