OpenTTD Source 20260129-master-g2bb01bd0e4
command_type.h File Reference

Types related to commands. More...

#include "company_type.h"
#include "economy_type.h"
#include "strings_type.h"
#include "tile_type.h"

Go to the source code of this file.

Data Structures

class  CommandCost
 Common return value for all commands. More...
 
struct  CommandFunctionTraitHelper< CommandCost(*)(DoCommandFlags, Targs...)>
 
struct  CommandFunctionTraitHelper< Tret< CommandCost, Tretargs... >(*)(DoCommandFlags, Targs...)>
 

Macros

#define DEF_CMD_TRAIT(cmd_, proc_, flags_, type_)
 

Typedefs

using DoCommandFlags = EnumBitSet< DoCommandFlag, uint16_t >
 
using CommandFlags = EnumBitSet< CommandFlag, uint16_t >
 
typedef std::vector< uint8_t > CommandDataBuffer
 Storage buffer for serialized command data.
 
typedef void CommandCallback(Commands cmd, const CommandCost &result, TileIndex tile)
 Define a callback function for the client, after the command is finished.
 
typedef void CommandCallbackData(Commands cmd, const CommandCost &result, const CommandDataBuffer &data, CommandDataBuffer result_data)
 Define a callback function for the client, after the command is finished.
 

Enumerations

enum class  Commands : uint8_t {
  BuildRailLong , RemoveRailLong , BuildRail , RemoveRail ,
  LandscapeClear , BuildBridge , BuildRailStation , BuildRailDepot ,
  BuildSignal , RemoveSignal , TerraformLand , BuildObject ,
  BuildObjectArea , BuildTunnel , RemoveFromRailStation , ConvertRail ,
  BuildRailWaypoint , RenameWaypoint , MoveWaypointNAme , RemoveFromRailWaypoint ,
  BuildRoadWaypoint , RemoveFromRoadWaypoint , BuildRoadStop , RemoveRoadStop ,
  BuildRoadLong , RemoveRoadLong , BuildRoad , BuildRoadDepot ,
  ConvertRoad , BuildAirport , BuildDock , BuildShipDepot ,
  BuildBuoy , PlantTree , BuildVehicle , SellVehicle ,
  RefitVehicle , SendVehicleToDepot , SetVehicleVisibility , MoveRailVehicle ,
  ForceTrainProceed , ReverseTrainDirection , ClearOrderBackup , ModifyOrder ,
  SkipToOrder , DeleteOrder , InsertOrder , ChangeServiceInterval ,
  BuildIndustry , IndustrySetFlags , IndustrySetExclusivity , IndustrySetText ,
  IndustrySetProduction , SetCompanyManagerFace , SetCompanyColour , IncreaseLoan ,
  DecreaseLoan , SetCompanyMaxLoan , WantEnginePreview , EngineControl ,
  RenameVehicle , RenameEngine , RenameCompany , RenamePresident ,
  RenameStation , MoveStationName , RenameDepot , PlaceSign ,
  RenameSign , MoveSign , TurnRoadVehicle , Pause ,
  BuyCompany , FoundTown , RenameTown , TownAction ,
  TownCargoGoal , TownGrowthRate , TownRating , TownSetText ,
  ExpandTown , DeleteTown , PlaceHouse , PlaceHouseArea ,
  OrderRefit , CloneOrder , ClearArea , MoneyCheat ,
  ChangeBankBalance , BuildCanal , CreateSubsidy , CompanyControl ,
  CompanyAllowListControl , CreateCustomNewsItem , CreateGoal , RemoveGoal ,
  SetGoalDestination , SetGoalText , SetGoalProgress , SetGoalCompleted ,
  GoalQuestion , GoalQuestionAnswer , CreateStoryPage , CreateStoryPageElement ,
  UpdateStoryPageElement , SetStoryPageTitle , SetStoryPageDate , ShowStoryPage ,
  RemoveStoryPage , RemoveStoryPageElement , ScrollViewport , StoryPageButton ,
  LevelLand , BuildLock , BuildSignalLong , RemoveSignalLong ,
  GiveMoney , ChangeSetting , ChangeCompanySetting , SetAutoreplace ,
  CloneVehicle , StartStopVehicle , MassStartStop , AutoreplaceVehicle ,
  DepotMassSell , DepotMassAutoreplace , CreateGroup , DeleteGroup ,
  AlterGroup , AddVehicleToGroup , AddSharedVehiclesToGroup , RemoveAllVehiclesGroup ,
  SetGroupFlag , SetGroupLivery , MoveOrder , ChangeTimetable ,
  ChangeTimetableBulk , SetVehicleOnTime , AutofillTimetable , SetTimetableStart ,
  OpenCloseAirport , CreateLeagueTable , CreateLeagueTableElement , UpdateLeagueTableElementData ,
  UpdateLeagueTableElementScore , RemoveLeagueTableElement , End
}
 List of commands. More...
 
enum class  DoCommandFlag : uint8_t {
  Execute , Auto , QueryCost , NoWater ,
  NoTestTownRating , Bankrupt , AutoReplace , NoCargoCapacityCheck ,
  AllTiles , NoModifyTownRating , ForceClearTile
}
 List of flags for a command. More...
 
enum class  CommandFlag : uint8_t {
  Server , Spectator , Offline , Auto ,
  AllTiles , NoTest , NoWater , ClientID ,
  Deity , StrCtrl , NoEst , Location
}
 Command flags for the command table _command_proc_table. More...
 
enum class  CommandType : uint8_t {
  LandscapeConstruction , VehicleConstruction , MoneyManagement , VehicleManagement ,
  RouteManagement , OtherManagement , CompanySetting , ServerSetting ,
  Cheat , End
}
 Types of commands we have. More...
 
enum class  CommandPauseLevel : uint8_t { NoActions , NoConstruction , NoLandscaping , AllActions }
 Different command pause levels. More...
 

Functions

CommandCost CommandCostWithParam (StringID str, uint64_t value)
 Return an error status, with string and parameter.
 
CommandCost CommandCostWithParam (StringID str, ConvertibleThroughBase auto value)
 

Detailed Description

Types related to commands.

Definition in file command_type.h.

Macro Definition Documentation

◆ DEF_CMD_TRAIT

#define DEF_CMD_TRAIT (   cmd_,
  proc_,
  flags_,
  type_ 
)
Value:
template <> struct CommandTraits<cmd_> { \
using ProcType = decltype(&proc_); \
using RetCallbackProc = typename CommandFunctionTraitHelper<ProcType>::CbProcType; \
static constexpr Commands cmd = cmd_; \
static constexpr auto &proc = proc_; \
static constexpr CommandFlags flags = flags_; \
static constexpr CommandType type = type_; \
static inline constexpr std::string_view name = #proc_; \
};
CommandType
Types of commands we have.
Commands
List of commands.
Defines the traits of a command.

Definition at line 467 of file command_type.h.

Typedef Documentation

◆ CommandCallback

typedef void CommandCallback(Commands cmd, const CommandCost &result, TileIndex tile)

Define a callback function for the client, after the command is finished.

Functions of this type are called after the command is finished. The parameters are from the #CommandProc callback type. The boolean parameter indicates if the command succeeded or failed.

Parameters
cmdThe command that was executed
resultThe result of the executed command
tileThe tile of the command action
See also
CommandProc

Definition at line 496 of file command_type.h.

◆ CommandCallbackData

typedef void CommandCallbackData(Commands cmd, const CommandCost &result, const CommandDataBuffer &data, CommandDataBuffer result_data)

Define a callback function for the client, after the command is finished.

Functions of this type are called after the command is finished. The parameters are from the #CommandProc callback type. The boolean parameter indicates if the command succeeded or failed.

Parameters
cmdThe command that was executed
resultThe result of the executed command
tileThe tile of the command action
dataAdditional data of the command
result_dataAdditional returned data from the command
See also
CommandProc

Definition at line 512 of file command_type.h.

◆ CommandDataBuffer

typedef std::vector<uint8_t> CommandDataBuffer

Storage buffer for serialized command data.

Definition at line 482 of file command_type.h.

◆ CommandFlags

using CommandFlags = EnumBitSet<CommandFlag, uint16_t>

Definition at line 421 of file command_type.h.

◆ DoCommandFlags

Definition at line 400 of file command_type.h.

Enumeration Type Documentation

◆ CommandFlag

enum class CommandFlag : uint8_t
strong

Command flags for the command table _command_proc_table.

This enumeration defines flags for the _command_proc_table.

Enumerator
Server 

the command can only be initiated by the server

Spectator 

the command may be initiated by a spectator

Offline 

the command cannot be executed in a multiplayer game; single-player only

Auto 

set the DoCommandFlag::Auto flag on this command

AllTiles 

allow this command also on TileType::Void tiles

NoTest 

the command's output may differ between test and execute due to town rating changes etc.

NoWater 

set the DoCommandFlag::NoWater flag on this command

ClientID 

set p2 with the ClientID of the sending client.

Deity 

the command may be executed by COMPANY_DEITY

StrCtrl 

the command's string may contain control strings

NoEst 

the command is never estimated.

Location 

the command has implicit location argument.

Definition at line 407 of file command_type.h.

◆ CommandPauseLevel

enum class CommandPauseLevel : uint8_t
strong

Different command pause levels.

Enumerator
NoActions 

No user actions may be executed.

NoConstruction 

No construction actions may be executed.

NoLandscaping 

No landscaping actions may be executed.

AllActions 

All actions may be executed.

Definition at line 440 of file command_type.h.

◆ Commands

enum class Commands : uint8_t
strong

List of commands.

This enum defines all possible commands which can be executed to the game engine. Observing the game like the query-tool or checking the profit of a vehicle don't result in a command which should be executed in the engine nor send to the server in a network game.

See also
_command_proc_table
Enumerator
BuildRailLong 

build a rail track

RemoveRailLong 

remove a rail track

BuildRail 

build a single rail track

RemoveRail 

remove a single rail track

LandscapeClear 

demolish a tile

BuildBridge 

build a bridge

BuildRailStation 

build a rail station

BuildRailDepot 

build a train depot

BuildSignal 

build a signal

RemoveSignal 

remove a signal

TerraformLand 

terraform a tile

BuildObject 

build an object

BuildObjectArea 

build an area of objects

BuildTunnel 

build a tunnel

RemoveFromRailStation 

remove a (rectangle of) tiles from a rail station

ConvertRail 

convert a rail type

BuildRailWaypoint 

build a waypoint

RenameWaypoint 

rename a waypoint

MoveWaypointNAme 

move a waypoint name

RemoveFromRailWaypoint 

remove a (rectangle of) tiles from a rail waypoint

BuildRoadWaypoint 

build a road waypoint

RemoveFromRoadWaypoint 

remove a (rectangle of) tiles from a road waypoint

BuildRoadStop 

build a road stop

RemoveRoadStop 

remove a road stop

BuildRoadLong 

build a complete road (not a "half" one)

RemoveRoadLong 

remove a complete road (not a "half" one)

BuildRoad 

build a "half" road

BuildRoadDepot 

build a road depot

ConvertRoad 

convert a road type

BuildAirport 

build an airport

BuildDock 

build a dock

BuildShipDepot 

build a ship depot

BuildBuoy 

build a buoy

PlantTree 

plant a tree

BuildVehicle 

build a vehicle

SellVehicle 

sell a vehicle

RefitVehicle 

refit the cargo space of a vehicle

SendVehicleToDepot 

send a vehicle to a depot

SetVehicleVisibility 

hide or unhide a vehicle in the build vehicle and autoreplace GUIs

MoveRailVehicle 

move a rail vehicle (in the depot)

ForceTrainProceed 

proceed a train to pass a red signal

ReverseTrainDirection 

turn a train around

ClearOrderBackup 

clear the order backup of a given user/tile

ModifyOrder 

modify an order (like set full-load)

SkipToOrder 

skip an order to the next of specific one

DeleteOrder 

delete an order

InsertOrder 

insert a new order

ChangeServiceInterval 

change the server interval of a vehicle

BuildIndustry 

build a new industry

IndustrySetFlags 

change industry control flags

IndustrySetExclusivity 

change industry exclusive consumer/supplier

IndustrySetText 

change additional text for the industry

IndustrySetProduction 

change industry production

SetCompanyManagerFace 

set the manager's face of the company

SetCompanyColour 

set the colour of the company

IncreaseLoan 

increase the loan from the bank

DecreaseLoan 

decrease the loan from the bank

SetCompanyMaxLoan 

sets the max loan for the company

WantEnginePreview 

confirm the preview of an engine

EngineControl 

control availability of the engine for companies

RenameVehicle 

rename a whole vehicle

RenameEngine 

rename a engine (in the engine list)

RenameCompany 

change the company name

RenamePresident 

change the president name

RenameStation 

rename a station

MoveStationName 

move a station name

RenameDepot 

rename a depot

PlaceSign 

place a sign

RenameSign 

rename a sign

MoveSign 

move a sign

TurnRoadVehicle 

turn a road vehicle around

Pause 

pause the game

BuyCompany 

buy a company which is bankrupt

FoundTown 

found a town

RenameTown 

rename a town

TownAction 

do a action from the town detail window (like advertises or bribe)

TownCargoGoal 

set the goal of a cargo for a town

TownGrowthRate 

set the town growth rate

TownRating 

set rating of a company in a town

TownSetText 

set the custom text of a town

ExpandTown 

expand a town

DeleteTown 

delete a town

PlaceHouse 

place a house

PlaceHouseArea 

place an area of houses

OrderRefit 

change the refit information of an order (for "goto depot" )

CloneOrder 

clone (and share) an order

ClearArea 

clear an area

MoneyCheat 

do the money cheat

ChangeBankBalance 

change bank balance to charge costs or give money from a GS

BuildCanal 

build a canal

CreateSubsidy 

create a new subsidy

CompanyControl 

used in multiplayer to create a new companies etc.

CompanyAllowListControl 

Used in multiplayer to add/remove a client's public key to/from the company's allow list.

CreateCustomNewsItem 

create a custom news message

CreateGoal 

create a new goal

RemoveGoal 

remove a goal

SetGoalDestination 

update goal destination of a goal

SetGoalText 

update goal text of a goal

SetGoalProgress 

update goal progress text of a goal

SetGoalCompleted 

update goal completed status of a goal

GoalQuestion 

ask a goal related question

GoalQuestionAnswer 

answer(s) to Commands::GoalQuestion

CreateStoryPage 

create a new story page

CreateStoryPageElement 

create a new story page element

UpdateStoryPageElement 

update a story page element

SetStoryPageTitle 

update title of a story page

SetStoryPageDate 

update date of a story page

ShowStoryPage 

show a story page

RemoveStoryPage 

remove a story page

RemoveStoryPageElement 

remove a story page element

ScrollViewport 

scroll main viewport of players

StoryPageButton 

selection via story page button

LevelLand 

level land

BuildLock 

build a lock

BuildSignalLong 

add signals along a track (by dragging)

RemoveSignalLong 

remove signals along a track (by dragging)

GiveMoney 

give money to another company

ChangeSetting 

change a setting

ChangeCompanySetting 

change a company setting

SetAutoreplace 

set an autoreplace entry

CloneVehicle 

clone a vehicle

StartStopVehicle 

start or stop a vehicle

MassStartStop 

start/stop all vehicles (in a depot)

AutoreplaceVehicle 

replace/renew a vehicle while it is in a depot

DepotMassSell 

sell all vehicles which are in a given depot

DepotMassAutoreplace 

force the autoreplace to take action in a given depot

CreateGroup 

create a new group

DeleteGroup 

delete a group

AlterGroup 

alter a group

AddVehicleToGroup 

add a vehicle to a group

AddSharedVehiclesToGroup 

add all other shared vehicles to a group which are missing

RemoveAllVehiclesGroup 

remove all vehicles from a group

SetGroupFlag 

set/clear a flag for a group

SetGroupLivery 

set the livery for a group

MoveOrder 

move an order

ChangeTimetable 

change the timetable for a vehicle

ChangeTimetableBulk 

change the timetable for all orders of a vehicle

SetVehicleOnTime 

set the vehicle on time feature (timetable)

AutofillTimetable 

autofill the timetable

SetTimetableStart 

set the date that a timetable should start

OpenCloseAirport 

open/close an airport to incoming aircraft

CreateLeagueTable 

create a new league table

CreateLeagueTableElement 

create a new element in a league table

UpdateLeagueTableElementData 

update the data fields of a league table element

UpdateLeagueTableElementScore 

update the score of a league table element

RemoveLeagueTableElement 

remove a league table element

End 
Attention
Must ALWAYS be on the end of this list!! (period)

Definition at line 196 of file command_type.h.

◆ CommandType

enum class CommandType : uint8_t
strong

Types of commands we have.

Enumerator
LandscapeConstruction 

Construction and destruction of objects on the map.

VehicleConstruction 

Construction, modification (incl. refit) and destruction of vehicles.

MoneyManagement 

Management of money, i.e. loans.

VehicleManagement 

Stopping, starting, sending to depot, turning around, replace orders etc.

RouteManagement 

Modifications to route management (orders, groups, etc).

OtherManagement 

Renaming stuff, changing company colours, placing signs, etc.

CompanySetting 

Changing settings related to a company.

ServerSetting 

Pausing/removing companies/server settings.

Cheat 

A cheat of some sorts.

End 

End marker.

Definition at line 424 of file command_type.h.

◆ DoCommandFlag

enum class DoCommandFlag : uint8_t
strong

List of flags for a command.

This enums defines some flags which can be used for the commands.

Enumerator
Execute 

execute the given command

Auto 

don't allow building on structures

QueryCost 

query cost only, don't build.

NoWater 

don't allow building on water

NoTestTownRating 

town rating does not disallow you from building

Bankrupt 

company bankrupts, skip money check, skip vehicle on tile check in some cases

AutoReplace 

autoreplace/autorenew is in progress, this shall disable vehicle limits when building, and ignore certain restrictions when undoing things (like vehicle attach callback)

NoCargoCapacityCheck 

when autoreplace/autorenew is in progress, this shall prevent truncating the amount of cargo in the vehicle to prevent testing the command to remove cargo

AllTiles 

allow this command also on TileType::Void tiles

NoModifyTownRating 

do not change town rating

ForceClearTile 

do not only remove the object on the tile, but also clear any water left on it

Definition at line 387 of file command_type.h.

Function Documentation

◆ CommandCostWithParam() [1/2]

CommandCost CommandCostWithParam ( StringID  str,
ConvertibleThroughBase auto  value 
)

Definition at line 184 of file command_type.h.

◆ CommandCostWithParam() [2/2]

CommandCost CommandCostWithParam ( StringID  str,
uint64_t  value 
)

Return an error status, with string and parameter.

Parameters
strStringID of error.
valueSingle parameter for error.
Returns
CommandCost representing the error.

Definition at line 417 of file command.cpp.

References GetEncodedString(), IsLocalCompany(), and CommandCost::SetEncodedMessage().

Referenced by CheckAllowRemoveRoad(), CheckforTownRating(), CheckIfAuthorityAllowsNewStation(), ClearTile_Station(), ClearTile_Town(), CmdBuildAirport(), CmdBuildBridge(), CmdDecreaseLoan(), CmdIncreaseLoan(), DoBuildLock(), CommandHelperBase::InternalExecuteProcessResult(), and IsStationBridgeAboveOk().