Go to the documentation of this file.
40 #include "table/strings.h"
63 this->name_1 = name_1;
145 DrawSprite(SPR_COMPANY_ICON, COMPANY_SPRITE_COLOUR(c), x, y);
164 for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) {
166 case CMFV_MOUSTACHE:
if (!has_moustache)
continue;
break;
168 case CMFV_NOSE:
if (has_moustache)
continue;
break;
169 case CMFV_TIE_EARRING:
if (!has_tie_earring)
continue;
break;
170 case CMFV_GLASSES:
if (!has_glasses)
continue;
break;
202 cost.
MakeError(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY);
216 if (cost.
GetCost() == 0)
return;
352 if (c->
name_1 != STR_SV_UNNAMED)
return;
359 if (t->
name.empty() &&
IsInsideMM(t->townnametype, SPECSTR_TOWNNAME_START, SPECSTR_TOWNNAME_LAST + 1)) {
360 str = t->townnametype - SPECSTR_TOWNNAME_START + SPECSTR_COMPANY_NAME_START;
361 strp = t->townnameparts;
366 if (cc->name_1 == str && cc->name_2 == strp)
goto bad_town_name;
369 GetString(buffer, str,
lastof(buffer));
381 SetDParam(0, STR_NEWS_COMPANY_LAUNCH_TITLE);
382 SetDParam(1, STR_NEWS_COMPANY_LAUNCH_DESCRIPTION);
392 str = SPECSTR_ANDCO_NAME;
396 str = SPECSTR_ANDCO_NAME;
403 static const byte _colour_sort[COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1};
406 { COLOUR_BLUE, COLOUR_LIGHT_BLUE },
407 { COLOUR_GREEN, COLOUR_DARK_GREEN },
408 { INVALID_COLOUR, INVALID_COLOUR },
409 { COLOUR_ORANGE, INVALID_COLOUR },
410 { INVALID_COLOUR, INVALID_COLOUR },
411 { COLOUR_DARK_BLUE, COLOUR_BLUE },
412 { COLOUR_PALE_GREEN, COLOUR_DARK_GREEN },
413 { COLOUR_PALE_GREEN, COLOUR_GREEN },
414 { COLOUR_DARK_BLUE, COLOUR_LIGHT_BLUE },
415 { COLOUR_BROWN, COLOUR_ORANGE },
416 { COLOUR_PURPLE, INVALID_COLOUR },
417 { COLOUR_MAUVE, INVALID_COLOUR },
418 { COLOUR_YELLOW, COLOUR_CREAM },
419 { COLOUR_CREAM, INVALID_COLOUR },
420 { COLOUR_WHITE, INVALID_COLOUR },
421 { COLOUR_GREY, INVALID_COLOUR },
430 Colours colours[COLOUR_END];
433 for (uint i = 0; i < COLOUR_END; i++) colours[i] = (Colours)i;
436 for (uint i = 0; i < 100; i++) {
438 Swap(colours[
GB(r, 0, 4)], colours[
GB(r, 4, 4)]);
442 for (uint i = 0; i < COLOUR_END; i++) {
443 for (uint j = 1; j < COLOUR_END; j++) {
445 Swap(colours[j - 1], colours[j]);
452 Colours pcolour = (Colours)c->colour;
454 for (uint i = 0; i < COLOUR_END; i++) {
455 if (colours[i] == pcolour) {
456 colours[i] = INVALID_COLOUR;
461 for (uint j = 0; j < 2; j++) {
463 if (similar == INVALID_COLOUR)
break;
465 for (uint i = 1; i < COLOUR_END; i++) {
466 if (colours[i - 1] == similar)
Swap(colours[i - 1], colours[i]);
472 for (uint i = 0; i < COLOUR_END; i++) {
473 if (colours[i] != INVALID_COLOUR)
return colours[i];
494 GetString(buffer, STR_PRESIDENT_NAME,
lastof(buffer));
502 GetString(buffer2, STR_PRESIDENT_NAME,
lastof(buffer2));
503 if (strcmp(buffer2, buffer) == 0)
goto restart;
517 for (
LiveryScheme scheme = LS_BEGIN; scheme < LS_END; scheme++) {
518 c->livery[scheme].
in_use = 0;
524 if (g->owner == c->
index) {
525 g->livery.in_use = 0;
526 g->livery.colour1 = c->
colour;
527 g->livery.colour2 = c->
colour;
548 c =
new Company(STR_SV_UNNAMED, is_ai);
551 c =
new (company)
Company(STR_SV_UNNAMED, is_ai);
671 int32 best_performance = -1;
675 if (c2->bankrupt_asked == 0 &&
677 best_performance < c2->old_economy[1].performance_history &&
685 if (best_performance == -1) {
703 if (_game_mode == GM_EDITOR)
return;
738 memmove(&c->yearly_expenses[1], &c->yearly_expenses[0],
sizeof(c->yearly_expenses) -
sizeof(c->yearly_expenses[0]));
739 memset(&c->yearly_expenses[0], 0,
sizeof(c->yearly_expenses[0]));
764 if (other ==
nullptr) {
896 SetDParam(0, STR_NEWS_COMPANY_BANKRUPT_TITLE);
897 SetDParam(1, STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION);
899 AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, cni);
960 Colours colour = Extract<Colours, 0, 8>(p2);
962 bool second =
HasBit(p1, 8);
964 if (scheme >= LS_END || (colour >= COLOUR_END && colour != INVALID_COLOUR))
return CMD_ERROR;
967 if (scheme == LS_DEFAULT && colour == INVALID_COLOUR)
return CMD_ERROR;
972 if (scheme == LS_DEFAULT && !second) {
980 if (scheme != LS_DEFAULT)
SB(c->livery[scheme].
in_use, 0, 1, colour != INVALID_COLOUR);
981 if (colour == INVALID_COLOUR) colour = (Colours)c->livery[LS_DEFAULT].
colour1;
982 c->livery[scheme].
colour1 = colour;
986 if (scheme == LS_DEFAULT) {
987 for (
int i = 1; i < LS_END; i++) {
995 if (scheme != LS_DEFAULT)
SB(c->livery[scheme].
in_use, 1, 1, colour != INVALID_COLOUR);
996 if (colour == INVALID_COLOUR) colour = (Colours)c->livery[LS_DEFAULT].
colour2;
997 c->livery[scheme].
colour2 = colour;
999 if (scheme == LS_DEFAULT) {
1000 for (
int i = 1; i < LS_END; i++) {
1006 if (c->livery[scheme].
in_use != 0) {
1008 c->livery[LS_DEFAULT].
in_use = 1;
1012 c->livery[LS_DEFAULT].
in_use = 0;
1013 for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
1014 if (c->livery[scheme].
in_use != 0) {
1015 c->livery[LS_DEFAULT].
in_use = 1;
1021 ResetVehicleColourMap();
1054 if (!c->name.empty() && c->name ==
name)
return false;
1100 if (!c->president_name.empty() && c->president_name ==
name)
return false;
1132 if (c->
name_1 == STR_SV_UNNAMED && c->
name.empty()) {
1157 default: NOT_REACHED();
1173 if (RoadTypeIsRoad(rt)) total += this->
road[rt];
1186 if (RoadTypeIsTram(rt)) total += this->
road[rt];
1224 GetString(dest_company_name, STR_COMPANY_NAME,
lastof(dest_company_name));
1228 GetString(from_company_name, STR_COMPANY_NAME,
lastof(from_company_name));
@ VEH_AIRCRAFT
Aircraft vehicle type.
bool give_money
allow giving other companies money
static void HandleBankruptcyTakeover(Company *c)
Handle the bankruptcy take over of a company.
void BuildOwnerLegend()
Completes the array for the owned property legend.
bool is_ai
If true, the company is (also) controlled by the computer (a NoAI program).
UnitID max_aircraft
max planes in game per company
uint32 TileIndex
The index/ID of a Tile.
uint64 inflation_prices
Cumulated inflation of prices since game start; 16 bit fractional part.
void InvalidateWindowData(WindowClass cls, WindowNumber number, int data, bool gui_scope)
Mark window data of the window of a given class and specific window number as invalid (in need of re-...
static int32 ClampToI32(const int64 a)
Reduce a signed 64-bit int to a signed 32-bit one.
@ EXPENSES_ROADVEH_RUN
Running costs road vehicles.
@ INVALID_EXPENSES
Invalid expense type.
CommandCost DoCommand(const CommandContainer *container, DoCommandFlag flags)
Shorthand for calling the long DoCommand with a container.
void MakeError(StringID message)
Makes this CommandCost behave like an error command.
static Titem * Get(size_t index)
Returns Titem with given index.
void SetWindowDirty(WindowClass cls, WindowNumber number)
Mark window as dirty (in need of repainting)
GroupStatistics group_all[VEH_COMPANY_END]
NOSAVE: Statistics for the ALL_GROUP group.
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
void CompanyAdminUpdate(const Company *company)
Called whenever company related information changes in order to notify admins.
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
static const CommandCost CMD_ERROR
Define a default return value for a failed command.
RailTypes avail_railtypes
Rail types available to this company.
Town * ClosestTownFromTile(TileIndex tile, uint threshold)
Return the town closest (in distance or ownership) to a given tile, within a given threshold.
static void GenerateCompanyName(Company *c)
Generate the name of a company from the last build coordinate.
Class to backup a specific variable and restore it later.
uint32 CompanyManagerFace
Company manager face bits, info see in company_manager_face.h.
void SetDefaultCompanySettings(CompanyID cid)
Set the company settings for a new company to their default values.
RoadTypes avail_roadtypes
Road types available to this company.
static const Colours _similar_colour[COLOUR_END][2]
Similar colours, so we can try to prevent same coloured companies.
Year _cur_year
Current year, starting at 0.
@ EXPENSES_OTHER
Other expenses.
CompanyID client_playas
As which company is this client playing (CompanyID)
Year inaugurated_year
Year of starting the company.
CommandCost CmdGiveMoney(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Transfer funds (money) from one company to another.
bool _network_server
network-server is active
static const int64 INITIAL_LOAN
The size of loan for a new company, in British Pounds!
uint32 clear_per_64k_frames
how many tiles may, over a long period, be cleared per 65536 frames?
@ WC_CLIENT_LIST
Client list; Window numbers:
GenderEthnicity
The gender/race combinations that we have faces for.
Tindex index
Index of this pool item.
CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Control the companies: add, delete, etc.
byte money_fraction
Fraction of money of the company, too small to represent in money.
void NetworkUpdateClientInfo(ClientID client_id)
Send updated client info of a particular client.
static void PostDestructor(size_t index)
Invalidating some stuff after removing item from the pool.
static int GetStartNextTime()
Get the number of days before the next AI should start.
@ WC_PERFORMANCE_HISTORY
Performance history graph; Window numbers:
@ WC_CLIENT_LIST_POPUP
Popup for the client list; Window numbers:
DifficultySettings difficulty
settings related to the difficulty
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
@ WC_SIGN_LIST
Sign list; Window numbers:
VehicleDefaultSettings vehicle
default settings for vehicles
void SetLocalCompany(CompanyID new_company)
Sets the local company and updates the settings that are set on a per-company basis to reflect the co...
static bool CanStartNew()
Is it possible to start a new AI company?
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
@ EXPENSES_AIRCRAFT_RUN
Running costs aircraft.
@ ROADTYPE_END
Used for iterations.
std::string name
Name of the company if the user changed it.
Money max_loan
NOSAVE: Maximum possible loan.
@ DESTTYPE_TEAM
Send message/notice to everyone playing the same company (Team)
ClientSettings _settings_client
The current settings for this game.
RoadTypes GetCompanyRoadTypes(CompanyID company, bool introduces)
Get the road types the given company can build.
bool new_year
Play sound on new year, summarising the performance during the last year.
TileIndex last_build_coordinate
Coordinate of the last build thing by this company.
CompanyManagerFace face
Face description of the president.
void DeleteCompanyWindows(CompanyID company)
Delete all windows of a company.
@ VEH_ROAD
Road vehicle type.
@ WC_GOALS_LIST
Goals list; Window numbers:
uint16 servint_ships
service interval for ships
Owner
Enum for all companies/owners.
@ DC_EXEC
execute the given command
@ WC_COMPANY_LEAGUE
Company league window; Window numbers:
byte _colour_gradient[COLOUR_END][8]
All 16 colour gradients 8 colours per gradient from darkest (0) to lightest (7)
static bool IsLocalCompany()
Is the current company the local company?
static void SetDParam(uint n, uint64 v)
Set a string parameter v at index n in the global string parameter array.
DoCommandFlag
List of flags for a command.
Money current_loan
Amount of money borrowed from the bank.
uint _cur_company_tick_index
used to generate a name for one company that doesn't have a name yet per tick
void InitializeCompanies()
Initialize the pool of companies.
void ClearEnginesHiddenFlagOfCompany(CompanyID cid)
Clear the 'hidden' flag for all engines of a new company.
bool MayCompanyTakeOver(CompanyID cbig, CompanyID csmall)
May company cbig buy company csmall?
uint32 GetRoadTotal() const
Get total sum of all owned road bits.
uint32 name_2
Parameter of name_1.
uint16 num_vehicle
Number of vehicles.
static const int MAX_CHAR_LENGTH
Max. length of UTF-8 encoded unicode character.
static const uint MAX_LENGTH_COMPANY_NAME_CHARS
The maximum length of a company name in characters including '\0'.
@ GENDER_FEMALE
This bit set means a female, otherwise male.
static bool IsInsideMM(const T x, const size_t min, const size_t max)
Checks if a value is in an interval.
static uint GetCompanyManagerFaceBits(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
Make sure the table's size is right.
@ WC_DELIVERED_CARGO
Delivered cargo graph; Window numbers:
void SetWindowWidgetDirty(WindowClass cls, WindowNumber number, byte widget_index)
Mark a particular widget in a particular window as dirty (in need of repainting)
@ WC_GRAPH_LEGEND
Legend for graphs; Window numbers:
static NetworkClientInfo * GetByClientID(ClientID client_id)
Return the CI given it's client-identifier.
size_t Utf8StringLength(const char *s)
Get the length of an UTF-8 encoded string in number of characters and thus not the number of bytes th...
void ShowCompanyFinances(CompanyID company)
Open the finances window of a company.
Colours _company_colours[MAX_COMPANIES]
NOSAVE: can be determined from company structs.
uint16 terraform_frame_burst
how many tile heights may, over a short period, be terraformed?
uint32 GetTramTotal() const
Get total sum of all owned tram bits.
CommandCost CheckOwnership(Owner owner, TileIndex tile)
Check whether the current owner owns something.
#define return_cmd_error(errcode)
Returns from a function with a specific StringID as error.
void StartupCompanies()
Start the next competitor now.
static void NewEvent(CompanyID company, ScriptEvent *event)
Queue a new event for an AI.
byte colour
Company colour.
Common return value for all commands.
int32 performance_history
Company score (scale 0-1000)
static const uint MAX_LENGTH_PRESIDENT_NAME_CHARS
The maximum length of a president name in characters including '\0'.
@ CCA_NEW_AI
Create a new AI company.
byte num_valid_stat_ent
Number of valid statistical entries in old_economy.
SoundSettings sound
sound effect settings
bool DoCommandP(const CommandContainer *container, bool my_cmd)
Shortcut for the long DoCommandP when having a container with the data.
ExpensesType GetExpensesType() const
The expense type of the cost.
UnitID max_ships
max ships in game per company
void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst)
Subtract money from a company, including the money fraction.
uint16 tree_frame_burst
how many trees may, over a short period, be planted?
static void GeneratePresidentName(Company *c)
Generate a random president name of a company.
static T SB(T &x, const uint8 s, const uint8 n, const U d)
Set n bits in x starting at bit s to d.
char default_company_pass[NETWORK_PASSWORD_LENGTH]
default password for new companies in encrypted form
ClientID
'Unique' identifier to be given to clients
@ INVALID_OWNER
An invalid owner.
Money money
Money owned by the company.
@ EXPENSES_SHIP_INC
Income from ships.
void InvalidateCompanyWindows(const Company *company)
Refresh all windows owned by a company.
static void StartNew(CompanyID company, bool rerandomise_ai=true)
Start a new AI company.
uint32 terraform_per_64k_frames
how many tile heights may, over a long period, be terraformed per 65536 frames?
void GetNameOfOwner(Owner owner, TileIndex tile)
Set the right DParams to get the name of an owner.
static bool AreCompanyManagerFaceBitsValid(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
Checks whether the company manager's face bits have a valid range.
GameSettings _settings_game
Game settings of a running game or the scenario editor.
@ TC_IS_PALETTE_COLOUR
Colour value is already a real palette colour index, not an index of a StringColour.
byte in_use
Bit 0 set if this livery should override the default livery first colour, Bit 1 for the second colour...
@ CCA_NEW
Create a new company.
static void NewEvent(class ScriptEvent *event)
Queue a new event for a Game Script.
EconomySettings economy
settings to change the economy
@ MAX_COMPANIES
Maximum number of companies.
CompanyID _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
void SyncCompanySettings()
Sync all company settings in a multiplayer game.
static void BroadcastNewEvent(ScriptEvent *event, CompanyID skip_company=MAX_COMPANIES)
Broadcast a new event to all active AIs.
void DeleteConstructionWindows()
Delete all windows that are used for construction of vehicle etc.
Money GetCost() const
The costs as made up to this moment.
static bool IsInteractiveCompany(CompanyID company)
Is the user representing company?
static bool StrEmpty(const char *s)
Check if a string buffer is empty.
bool _networking
are we in networking mode?
void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, ZoomLevel zoom)
Draw a sprite, not in a viewport.
std::string president_name
Name of the president if the user changed it.
static bool IsValidCompanyManagerFace(CompanyManagerFace cmf)
Checks whether a company manager's face is a valid encoding.
Default settings for vehicles.
uint32 road[ROADTYPE_END]
Count of company owned track bits for each road type.
Money yearly_expenses[3][EXPENSES_END]
Expenses of the company for the last three years, in every ExpensesType category.
uint32 tree_per_64k_frames
how many trees may, over a long period, be planted per 65536 frames?
AdminCompanyRemoveReason
Reasons for removing a company - communicated to admins.
CommandCost CmdSetCompanyManagerFace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Change the company manager's face.
CompanyCtrlAction
The action to do with CMD_COMPANY_CTRL.
Owner share_owners[4]
Owners of the 4 shares of the company. INVALID_OWNER if nobody has bought them yet.
@ ROADTYPE_BEGIN
Used for iterations.
@ WC_INCOME_GRAPH
Income graph; Window numbers:
@ NR_NONE
Empty reference.
CommandCost CmdSetCompanyColour(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Change the company's company-colour.
@ EXPENSES_AIRCRAFT_INC
Income from aircraft.
RoadType
The different roadtypes we support.
VehicleType
Available vehicle types.
void NetworkAdminCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr)
Notify the admin network of a company to be removed (including the reason why).
@ EXPENSES_LOAN_INT
Interest payments over the loan.
void CompaniesYearlyLoop()
A year has passed, update the economic data of all companies, and perhaps show the financial overview...
@ WC_LINKGRAPH_LEGEND
Linkgraph legend; Window numbers:
bool CheckCompanyHasMoney(CommandCost &cost)
Verify whether the company can pay the bill.
void CompanyAdminRemove(CompanyID company_id, CompanyRemoveReason reason)
Called whenever a company is removed in order to notify admins.
CompanyMask bankrupt_asked
which companies were asked about buying it?
ClientID client_id
Client identifier (same as ClientState->client_id)
uint32 president_name_2
Parameter of president_name_1.
static Owner GetTileOwner(TileIndex tile)
Returns the owner of a tile.
void DrawCompanyIcon(CompanyID c, int x, int y)
Draw the icon of a company.
ClientID _network_own_client_id
Our client identifier.
static const byte _colour_sort[COLOUR_END]
Sorting weights for the company colours.
void NetworkAdminCompanyUpdate(const Company *company)
Notify the admin network of company updates.
CompanyPool _company_pool("Company")
Pool of companies.
@ WC_COMPANY_VALUE
Company value graph; Window numbers:
void ShowBuyCompanyDialog(CompanyID company)
Show the query to buy another company.
@ NR_TILE
Reference tile. Scroll to tile when clicking on the news.
Money expenses
The amount of expenses.
uint32 StringID
Numeric value that represents a string, independent of the selected language.
CompanyID _current_company
Company currently doing an action.
@ WC_GAME_OPTIONS
Game options window; Window numbers:
static Pool::IterateWrapper< Titem > Iterate(size_t from=0)
Returns an iterable ensemble of all valid Titem.
Base class for all pools.
void DeleteWindowById(WindowClass cls, WindowNumber number, bool force)
Delete a window by its class and window number (if it is open).
CompanyEconomyEntry cur_economy
Economic data of the company of this quarter.
@ WC_PERFORMANCE_DETAIL
Performance detail window; Window numbers:
uint16 servint_trains
service interval for trains
UnitID max_trains
max trains in game per company
static size_t GetNumItems()
Returns number of valid items in the pool.
void Restore()
Restore the variable.
@ CMD_RENAME_COMPANY
change the company name
static bool MaybeStartNewCompany()
Start a new competitor company if possible.
@ WC_AI_LIST
AI list; Window numbers:
bool show_finances
show finances at end of year
TextColour GetDrawStringCompanyColour(CompanyID company)
Get the colour for DrawString-subroutines which matches the colour of the company.
CompanyManagerFace _company_manager_face
for company manager face storage in openttd.cfg
@ NF_COMPANY
Company news item. (Newspaper with face)
@ COMPANY_SPECTATOR
The client is spectating.
int CompanyServiceInterval(const Company *c, VehicleType type)
Get the service interval for the given company and vehicle type.
void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci)
Perform all the server specific administration of a new company.
void InvalidateWindowClassesData(WindowClass cls, int data, bool gui_scope)
Mark window data of all windows of a given class as invalid (in need of re-computing) Note that by de...
@ WC_NETWORK_STATUS_WINDOW
Network status window; Window numbers:
static bool CleaningPool()
Returns current state of pool cleaning - yes or no.
@ WC_AI_SETTINGS
AI settings; Window numbers:
@ OWNER_NONE
The tile has no ownership.
RailTypes GetCompanyRailtypes(CompanyID company, bool introduces)
Get the rail types the given company can build.
uint16 servint_aircraft
service interval for aircraft
static bool CanAllocateItem(size_t n=1)
Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function()
CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Change the name of the president.
#define MAX_UVALUE(type)
The largest value that can be entered in a variable.
int CDECL seprintf(char *str, const char *last, const char *format,...)
Safer implementation of snprintf; same as snprintf except:
@ NT_COMPANY_INFO
Company info (new companies, bankruptcy messages)
static void SubtractMoneyFromAnyCompany(Company *c, const CommandCost &cost)
Deduct costs of a command from the money of a company.
@ EXPENSES_PROPERTY
Property costs.
Company * DoStartupNewCompany(bool is_ai, CompanyID company=INVALID_COMPANY)
Create a new company and sets all company variables default values.
byte max_no_competitors
the number of competitors (AIs)
UnitID max_roadveh
max trucks in game per company
uint16 clear_frame_burst
how many tiles may, over a short period, be cleared?
@ CMD_COMPANY_CTRL
used in multiplayer to create a new companies etc.
#define INSTANTIATE_POOL_METHODS(name)
Force instantiation of pool methods so we don't get linker errors.
CommandCost CmdRenameCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Change the name of the company.
Money income
The amount of income.
void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceType reftype1=NR_NONE, uint32 ref1=UINT32_MAX, NewsReferenceType reftype2=NR_NONE, uint32 ref2=UINT32_MAX, void *free_data=nullptr)
Add a new newsitem to be shown.
StringID president_name_1
Name of the president if the user did not change it.
const char * NetworkChangeCompanyPassword(CompanyID company_id, const char *password)
Change the company password of a given company.
CommandCost CheckTileOwnership(TileIndex tile)
Check whether the current owner owns the stuff on the given tile.
@ WC_SEND_NETWORK_MSG
Chatbox; Window numbers:
@ SND_01_BAD_YEAR
40 == 0x28 New year: performance declined
static bool IsUniqueCompanyName(const char *name)
Is the given name in use as name of a company?
static T SetBit(T &x, const uint8 y)
Set a bit in a variable.
@ CRR_END
Sentinel for end.
void MarkWholeScreenDirty()
This function mark the whole screen as dirty.
NetworkSettings network
settings related to the network
@ EXPENSES_TRAIN_RUN
Running costs trains.
static const TileIndex INVALID_TILE
The very nice invalid tile marker.
uint16 servint_roadveh
service interval for road vehicles
@ INVALID_COMPANY
An invalid company.
@ SND_00_GOOD_YEAR
39 == 0x27 New year: performance improved
LiveryScheme
List of different livery schemes.
@ OWNER_END
Last + 1 owner.
@ CCA_DELETE
Delete a company.
CompanySettings company
default values for per-company settings
ConstructionSettings construction
construction of things in-game
VehicleSettings vehicle
options for vehicles
@ VEH_TRAIN
Train vehicle type.
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-nullptr) Titem.
@ WC_STATUS_BAR
Statusbar (at the bottom of your screen); Window numbers:
@ GE_WM
A male of Caucasian origin (white)
void SubtractMoneyFromCompany(const CommandCost &cost)
Subtract money from the _current_company, if the company is valid.
static void Stop(CompanyID company)
Stop a company to be controlled by an AI.
@ WC_FINANCES
Finances of a company; Window numbers:
static void Swap(T &a, T &b)
Type safe swap operation.
void OnTick_Companies()
Called every tick for updating some company info.
@ WN_NETWORK_STATUS_WINDOW_JOIN
Network join status.
const char * name
Full name of the script.
static Colours GenerateCompanyColour()
Generate a company colour.
@ WC_ERRMSG
Error message; Window numbers:
@ WC_OPERATING_PROFIT
Operating profit graph; Window numbers:
@ EXPENSES_ROADVEH_INC
Income from road vehicles.
@ VEH_SHIP
Ship vehicle type.
void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
Change the ownership of all the items of a company.
std::string name
Custom town name. If empty, the town was not renamed and uses the generated name.
@ WC_MAIN_TOOLBAR
Main toolbar (the long bar at the top); Window numbers:
void SetWindowClassesDirty(WindowClass cls)
Mark all windows of a particular class as dirty (in need of repainting)
CompanyEconomyEntry old_economy[MAX_HISTORY_QUARTERS]
Economic data of the company of the last MAX_HISTORY_QUARTERS quarters.
static bool IsUniquePresidentName(const char *name)
Is the given name in use as president name of a company?
int16 bankrupt_timeout
If bigger than 0, amount of time to wait for an answer on an offer to buy this company.
#define lastof(x)
Get the last element of an fixed size array.
CompanySettings settings
settings specific for each company
@ WC_SMALLMAP
Small map; Window numbers:
uint _next_competitor_start
the number of ticks before the next AI is started
void UpdateLandscapingLimits()
Update the landscaping limits per company.
static const int DAY_TICKS
1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885.
Container for all information known about a client.
@ EXPENSES_SHIP_RUN
Running costs ships.
@ OWNER_TOWN
A town owns the tile, or a town is expanding.
@ EXPENSES_TRAIN_INC
Income from trains.
void SetDParamStr(uint n, const char *str)
This function is used to "bind" a C string to a OpenTTD dparam slot.
CompanyRemoveReason
The reason why the company was removed.
void UpdateObjectColours(const Company *c)
Updates the colour of the object whenever a company changes.
static void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv, bool interactive=true)
Make a random new face.
void ResetCompanyLivery(Company *c)
Reset the livery schemes to the company's primary colour.
GUISettings gui
settings related to the GUI
StringID name_1
Name of the company if the user did not change it.
uint8 max_companies
maximum amount of companies
byte colour2
Second colour, for vehicles with 2CC support.
byte colour1
First colour, for all vehicles.