# command_type.h File Reference

Types related to commands. More...

`#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 | Command
| Define a command with the flags which belongs to it. More...
struct | CommandContainer
| Structure for buffering the build command when selecting a station to join. More...
## Defines
#define | CMD_MSG(x) ((x) << 16)
| Used to combine a StringID with the command.
## Typedefs
typedef CommandCost | CommandProc (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Defines the callback type for all command handler functions.
typedef void | CommandCallback (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
| Define a callback function for the client, after the command is finished.
## Enumerations
enum | Commands { CMD_BUILD_RAILROAD_TRACK, CMD_REMOVE_RAILROAD_TRACK, CMD_BUILD_SINGLE_RAIL, CMD_REMOVE_SINGLE_RAIL, CMD_LANDSCAPE_CLEAR, CMD_BUILD_BRIDGE, CMD_BUILD_RAIL_STATION, CMD_BUILD_TRAIN_DEPOT, CMD_BUILD_SIGNALS, CMD_REMOVE_SIGNALS, CMD_TERRAFORM_LAND, CMD_BUILD_OBJECT, CMD_BUILD_TUNNEL, CMD_REMOVE_FROM_RAIL_STATION, CMD_CONVERT_RAIL, CMD_BUILD_RAIL_WAYPOINT, CMD_RENAME_WAYPOINT, CMD_REMOVE_FROM_RAIL_WAYPOINT, CMD_BUILD_ROAD_STOP, CMD_REMOVE_ROAD_STOP, CMD_BUILD_LONG_ROAD, CMD_REMOVE_LONG_ROAD, CMD_BUILD_ROAD, CMD_BUILD_ROAD_DEPOT, CMD_BUILD_AIRPORT, CMD_BUILD_DOCK, CMD_BUILD_SHIP_DEPOT, CMD_BUILD_BUOY, CMD_PLANT_TREE, CMD_BUILD_VEHICLE, CMD_SELL_VEHICLE, CMD_REFIT_VEHICLE, CMD_SEND_VEHICLE_TO_DEPOT, CMD_MOVE_RAIL_VEHICLE, CMD_FORCE_TRAIN_PROCEED, CMD_REVERSE_TRAIN_DIRECTION, CMD_CLEAR_ORDER_BACKUP, CMD_MODIFY_ORDER, CMD_SKIP_TO_ORDER, CMD_DELETE_ORDER, CMD_INSERT_ORDER, CMD_CHANGE_SERVICE_INT, CMD_BUILD_INDUSTRY, CMD_SET_COMPANY_MANAGER_FACE, CMD_SET_COMPANY_COLOUR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN, CMD_WANT_ENGINE_PREVIEW, CMD_RENAME_VEHICLE, CMD_RENAME_ENGINE, CMD_RENAME_COMPANY, CMD_RENAME_PRESIDENT, CMD_RENAME_STATION, CMD_RENAME_DEPOT, CMD_PLACE_SIGN, CMD_RENAME_SIGN, CMD_TURN_ROADVEH, CMD_PAUSE, CMD_BUY_SHARE_IN_COMPANY, CMD_SELL_SHARE_IN_COMPANY, CMD_BUY_COMPANY, CMD_FOUND_TOWN, CMD_RENAME_TOWN, CMD_DO_TOWN_ACTION, CMD_EXPAND_TOWN, CMD_DELETE_TOWN, CMD_ORDER_REFIT, CMD_CLONE_ORDER, CMD_CLEAR_AREA, CMD_MONEY_CHEAT, CMD_BUILD_CANAL, CMD_COMPANY_CTRL, CMD_LEVEL_LAND, CMD_BUILD_LOCK, CMD_BUILD_SIGNAL_TRACK, CMD_REMOVE_SIGNAL_TRACK, CMD_GIVE_MONEY, CMD_CHANGE_SETTING, CMD_CHANGE_COMPANY_SETTING, CMD_SET_AUTOREPLACE, CMD_CLONE_VEHICLE, CMD_START_STOP_VEHICLE, CMD_MASS_START_STOP, CMD_AUTOREPLACE_VEHICLE, CMD_DEPOT_SELL_ALL_VEHICLES, CMD_DEPOT_MASS_AUTOREPLACE, CMD_CREATE_GROUP, CMD_DELETE_GROUP, CMD_RENAME_GROUP, CMD_ADD_VEHICLE_GROUP, CMD_ADD_SHARED_VEHICLE_GROUP, CMD_REMOVE_ALL_VEHICLES_GROUP, CMD_SET_GROUP_REPLACE_PROTECTION, CMD_MOVE_ORDER, CMD_CHANGE_TIMETABLE, CMD_SET_VEHICLE_ON_TIME, CMD_AUTOFILL_TIMETABLE, CMD_SET_TIMETABLE_START, CMD_END }
| List of commands. More...
enum | DoCommandFlag { DC_NONE = 0x000, DC_EXEC = 0x001, DC_AUTO = 0x002, DC_QUERY_COST = 0x004, DC_NO_WATER = 0x008, DC_NO_RAIL_OVERLAP = 0x010, DC_NO_TEST_TOWN_RATING = 0x020, DC_BANKRUPT = 0x040, DC_AUTOREPLACE = 0x080, DC_ALL_TILES = 0x100, DC_NO_MODIFY_TOWN_RATING = 0x200, DC_FORCE_CLEAR_TILE = 0x400 }
| List of flags for a command. More...
enum | FlaggedCommands { CMD_NETWORK_COMMAND = 0x0100, CMD_NO_TEST_IF_IN_NETWORK = 0x0200, CMD_FLAGS_MASK = 0xFF00, CMD_ID_MASK = 0x00FF }
| Defines some flags. More...
enum | CommandFlags { CMD_SERVER = 0x01, CMD_SPECTATOR = 0x02, CMD_OFFLINE = 0x04, CMD_AUTO = 0x08, CMD_ALL_TILES = 0x10, CMD_NO_TEST = 0x20, CMD_NO_WATER = 0x40, CMD_CLIENT_ID = 0x80 }
| Command flags for the command table _command_proc_table. More...
enum | CommandType { CMDT_LANDSCAPE_CONSTRUCTION, CMDT_VEHICLE_CONSTRUCTION, CMDT_MONEY_MANAGEMENT, CMDT_VEHICLE_MANAGEMENT, CMDT_ROUTE_MANAGEMENT, CMDT_OTHER_MANAGEMENT, CMDT_COMPANY_SETTING, CMDT_SERVER_SETTING, CMDT_CHEAT, CMDT_END }
| Types of commands we have. More...
enum | CommandPauseLevel { CMDPL_NO_ACTIONS, CMDPL_NO_CONSTRUCTION, CMDPL_NO_LANDSCAPING, CMDPL_ALL_ACTIONS }
| Different command pause levels. More...

## Detailed Description

Types related to commands.

Definition in file command_type.h.

## Define Documentation

#define CMD_MSG | ( | x |  | ) | ((x) << 16)

Used to combine a StringID with the command.

This macro can be used to add a StringID (the error message to show) on a command-id (CMD_xxx). Use the binary or-operator "|" to combine the command with the result from this macro.

Parameters:

  | x | The StringID to combine with a command-id

Definition at line 306 of file command_type.h.

Referenced by ChangeTimetableStartCallback(), CommonRaiseLowerBigLand(), GenericPlaceSignals(), GUIPlaceProcDragXY(), HandleAutoSignalPlacement(), VehicleViewWindow::OnClick(), VehicleDetailsWindow::OnClick(), TownViewWindow::OnClick(), TownAuthorityWindow::OnClick(), TimetableWindow::OnClick(), OrdersWindow::OnClick(), BuildIndustryWindow::OnClick(), VehicleGroupWindow::OnClick(), BuyCompanyWindow::OnClick(), CompanyWindow::OnClick(), CompanyFinancesWindow::OnClick(), OrdersWindow::OnDragDrop(), VehicleGroupWindow::OnDragDrop(), DepotWindow::OnDragDrop(), OrdersWindow::OnDropdownSelect(), VehicleGroupWindow::OnDropdownSelect(), BuildTreesWindow::OnPlaceMouseUp(), BuildRoadToolbarWindow::OnPlaceMouseUp(), BuildRailToolbarWindow::OnPlaceMouseUp(), BuildDocksToolbarWindow::OnPlaceMouseUp(), TerraformToolbarWindow::OnPlaceObject(), BuildRoadToolbarWindow::OnPlaceObject(), BuildRailToolbarWindow::OnPlaceObject(), OrdersWindow::OnPlaceObject(), BuildIndustryWindow::OnPlaceObject(), BuildDocksToolbarWindow::OnPlaceObject(), CompanyWindow::OnPlaceObject(), WaypointWindow::OnQueryTextFinished(), VehicleDetailsWindow::OnQueryTextFinished(), TownViewWindow::OnQueryTextFinished(), TimetableWindow::OnQueryTextFinished(), StationViewWindow::OnQueryTextFinished(), OrdersWindow::OnQueryTextFinished(), VehicleGroupWindow::OnQueryTextFinished(), DepotWindow::OnQueryTextFinished(), CompanyWindow::OnQueryTextFinished(), BuildVehicleWindow::OnQueryTextFinished(), DepotWindow::OnVehicleSelect(), OrdersWindow::OrderClick_Delete(), OrdersWindow::OrderClick_FullLoad(), OrdersWindow::OrderClick_NearestDepot(), OrdersWindow::OrderClick_Nonstop(), OrdersWindow::OrderClick_Service(), OrdersWindow::OrderClick_Skip(), OrdersWindow::OrderClick_StopSharing(), OrdersWindow::OrderClick_Unload(), PlaceAirport(), PlaceProc_Object(), PlaceProc_Sign(), PlaceRail_Station(), PlaceRail_Waypoint(), RenameSign(), and ShowBuildBridgeWindow().

## Typedef Documentation

typedef void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)

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:

  | result | The result of the executed command
  | tile | The tile of the command action
  | p1 | Additional data of the command
  | p1 | Additional data of the command

See also:
  CommandProc

Definition at line 405 of file command_type.h.

typedef CommandCost CommandProc(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)

Defines the callback type for all command handler functions.

This type defines the function header for all functions which handles a CMD_* command. A command handler use the parameters to act according to the meaning of the command. The tile parameter defines the tile to perform an action on. The flag parameter is filled with flags from the DC_* enumeration. The parameters p1 and p2 are filled with parameters for the command like "which road type", "which order" or "direction". Each function should mentioned in there doxygen comments the usage of these parameters.

Parameters:

  | tile | The tile to apply a command on
  | flags | Flags for the command, from the DC_* enumeration
  | p1 | Additional data for the command
  | p2 | Additional data for the command
  | text | Additional text

Returns:
  The CommandCost of the command, which can be succeeded or failed.

Definition at line 377 of file command_type.h.

## Enumeration Type Documentation

enum CommandFlags

Command flags for the command table _command_proc_table.

This enumeration defines flags for the _command_proc_table.

Enumerator:

  CMD_SERVER | the command can only be initiated by the server
  CMD_SPECTATOR | the command may be initiated by a spectator
  CMD_OFFLINE | the command cannot be executed in a multiplayer game; single-player only
  CMD_AUTO | set the DC_AUTO flag on this command
  CMD_ALL_TILES | allow this command also on MP_VOID tiles
  CMD_NO_TEST | the command's output may differ between test and execute due to town rating changes etc.
  CMD_NO_WATER | set the DC_NO_WATER flag on this command
  CMD_CLIENT_ID | set p2 with the ClientID of the sending client.

Definition at line 325 of file command_type.h.

enum CommandPauseLevel

Different command pause levels.

Enumerator:

  CMDPL_NO_ACTIONS | No user actions may be executed.
  CMDPL_NO_CONSTRUCTION | No construction actions may be executed.
  CMDPL_NO_LANDSCAPING | No landscaping actions may be executed.
  CMDPL_ALL_ACTIONS | All actions may be executed.

Definition at line 352 of file command_type.h.

enum Commands

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:

  CMD_BUILD_RAILROAD_TRACK | build a rail track
  CMD_REMOVE_RAILROAD_TRACK | remove a rail track
  CMD_BUILD_SINGLE_RAIL | build a single rail track
  CMD_REMOVE_SINGLE_RAIL | remove a single rail track
  CMD_LANDSCAPE_CLEAR | demolish a tile
  CMD_BUILD_BRIDGE | build a bridge
  CMD_BUILD_RAIL_STATION | build a rail station
  CMD_BUILD_TRAIN_DEPOT | build a train depot
  CMD_BUILD_SIGNALS | build a signal
  CMD_REMOVE_SIGNALS | remove a signal
  CMD_TERRAFORM_LAND | terraform a tile
  CMD_BUILD_OBJECT | build an object
  CMD_BUILD_TUNNEL | build a tunnel
  CMD_REMOVE_FROM_RAIL_STATION | remove a (rectangle of) tiles from a rail station
  CMD_CONVERT_RAIL | convert a rail type
  CMD_BUILD_RAIL_WAYPOINT | build a waypoint
  CMD_RENAME_WAYPOINT | rename a waypoint
  CMD_REMOVE_FROM_RAIL_WAYPOINT | remove a (rectangle of) tiles from a rail waypoint
  CMD_BUILD_ROAD_STOP | build a road stop
  CMD_REMOVE_ROAD_STOP | remove a road stop
  CMD_BUILD_LONG_ROAD | build a complete road (not a "half" one)
  CMD_REMOVE_LONG_ROAD | remove a complete road (not a "half" one)
  CMD_BUILD_ROAD | build a "half" road
  CMD_BUILD_ROAD_DEPOT | build a road depot
  CMD_BUILD_AIRPORT | build an airport
  CMD_BUILD_DOCK | build a dock
  CMD_BUILD_SHIP_DEPOT | build a ship depot
  CMD_BUILD_BUOY | build a buoy
  CMD_PLANT_TREE | plant a tree
  CMD_BUILD_VEHICLE | build a vehicle
  CMD_SELL_VEHICLE | sell a vehicle
  CMD_REFIT_VEHICLE | refit the cargo space of a vehicle
  CMD_SEND_VEHICLE_TO_DEPOT | send a vehicle to a depot
  CMD_MOVE_RAIL_VEHICLE | move a rail vehicle (in the depot)
  CMD_FORCE_TRAIN_PROCEED | proceed a train to pass a red signal
  CMD_REVERSE_TRAIN_DIRECTION | turn a train around
  CMD_CLEAR_ORDER_BACKUP | clear the order backup of a given user/tile
  CMD_MODIFY_ORDER | modify an order (like set full-load)
  CMD_SKIP_TO_ORDER | skip an order to the next of specific one
  CMD_DELETE_ORDER | delete an order
  CMD_INSERT_ORDER | insert a new order
  CMD_CHANGE_SERVICE_INT | change the server interval of a vehicle
  CMD_BUILD_INDUSTRY | build a new industry
  CMD_SET_COMPANY_MANAGER_FACE | set the manager's face of the company
  CMD_SET_COMPANY_COLOUR | set the colour of the company
  CMD_INCREASE_LOAN | increase the loan from the bank
  CMD_DECREASE_LOAN | decrease the loan from the bank
  CMD_WANT_ENGINE_PREVIEW | confirm the preview of an engine
  CMD_RENAME_VEHICLE | rename a whole vehicle
  CMD_RENAME_ENGINE | rename a engine (in the engine list)
  CMD_RENAME_COMPANY | change the company name
  CMD_RENAME_PRESIDENT | change the president name
  CMD_RENAME_STATION | rename a station
  CMD_RENAME_DEPOT | rename a depot
  CMD_PLACE_SIGN | place a sign
  CMD_RENAME_SIGN | rename a sign
  CMD_TURN_ROADVEH | turn a road vehicle around
  CMD_PAUSE | pause the game
  CMD_BUY_SHARE_IN_COMPANY | buy a share from a company
  CMD_SELL_SHARE_IN_COMPANY | sell a share from a company
  CMD_BUY_COMPANY | buy a company which is bankrupt
  CMD_FOUND_TOWN | found a town
  CMD_RENAME_TOWN | rename a town
  CMD_DO_TOWN_ACTION | do a action from the town detail window (like advertises or bribe)
  CMD_EXPAND_TOWN | expand a town
  CMD_DELETE_TOWN | delete a town
  CMD_ORDER_REFIT | change the refit informaction of an order (for "goto depot" )
  CMD_CLONE_ORDER | clone (and share) an order
  CMD_CLEAR_AREA | clear an area
  CMD_MONEY_CHEAT | do the money cheat
  CMD_BUILD_CANAL | build a canal
  CMD_COMPANY_CTRL | used in multiplayer to create a new companies etc.
  CMD_LEVEL_LAND | level land
  CMD_BUILD_LOCK | build a lock
  CMD_BUILD_SIGNAL_TRACK | add signals along a track (by dragging)
  CMD_REMOVE_SIGNAL_TRACK | remove signals along a track (by dragging)
  CMD_GIVE_MONEY | give money to another company
  CMD_CHANGE_SETTING | change a setting
  CMD_CHANGE_COMPANY_SETTING | change a company etting
  CMD_SET_AUTOREPLACE | set an autoreplace entry
  CMD_CLONE_VEHICLE | clone a vehicle
  CMD_START_STOP_VEHICLE | start or stop a vehicle
  CMD_MASS_START_STOP | start/stop all vehicles (in a depot)
  CMD_AUTOREPLACE_VEHICLE | replace/renew a vehicle while it is in a depot
  CMD_DEPOT_SELL_ALL_VEHICLES | sell all vehicles which are in a given depot
  CMD_DEPOT_MASS_AUTOREPLACE | force the autoreplace to take action in a given depot
  CMD_CREATE_GROUP | create a new group
  CMD_DELETE_GROUP | delete a group
  CMD_RENAME_GROUP | rename a group
  CMD_ADD_VEHICLE_GROUP | add a vehicle to a group
  CMD_ADD_SHARED_VEHICLE_GROUP | add all other shared vehicles to a group which are missing
  CMD_REMOVE_ALL_VEHICLES_GROUP | remove all vehicles from a group
  CMD_SET_GROUP_REPLACE_PROTECTION | set the autoreplace-protection for a group
  CMD_MOVE_ORDER | move an order
  CMD_CHANGE_TIMETABLE | change the timetable for a vehicle
  CMD_SET_VEHICLE_ON_TIME | set the vehicle on time feature (timetable)
  CMD_AUTOFILL_TIMETABLE | autofill the timetable
  CMD_SET_TIMETABLE_START | set the date that a timetable should start
  CMD_END | Must ALWAYS be on the end of this list!! (period).

Definition at line 142 of file command_type.h.

enum CommandType

Types of commands we have.

Enumerator:

  CMDT_LANDSCAPE_CONSTRUCTION | Construction and destruction of objects on the map.
  CMDT_VEHICLE_CONSTRUCTION | Construction, modification (incl. refit) and destruction of vehicles.
  CMDT_MONEY_MANAGEMENT | Management of money, i.e. loans and shares.
  CMDT_VEHICLE_MANAGEMENT | Stopping, starting, sending to depot, turning around, replace orders etc.
  CMDT_ROUTE_MANAGEMENT | Modifications to route management (orders, groups, etc).
  CMDT_OTHER_MANAGEMENT | Renaming stuff, changing company colours, placing signs, etc.
  CMDT_COMPANY_SETTING | Changing settings related to a company.
  CMDT_SERVER_SETTING | Pausing/removing companies/server settings.
  CMDT_CHEAT | A cheat of some sorts.
  CMDT_END | Magic end marker.

Definition at line 337 of file command_type.h.

enum DoCommandFlag

List of flags for a command.

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

Enumerator:

  DC_NONE | no flag is set
  DC_EXEC | execute the given command
  DC_AUTO | don't allow building on structures
  DC_QUERY_COST | query cost only, don't build.
  DC_NO_WATER | don't allow building on water
  DC_NO_RAIL_OVERLAP | don't allow overlap of rails (used in buildrail)
  DC_NO_TEST_TOWN_RATING | town rating does not disallow you from building
  DC_BANKRUPT | company bankrupts, skip money check, skip vehicle on tile check in some cases
  DC_AUTOREPLACE | autoreplace/autorenew is in progress, this shall disable vehicle limits when building, and ignore certain restrictions when undoing things (like vehicle attach callback)
  DC_ALL_TILES | allow this command also on MP_VOID tiles
  DC_NO_MODIFY_TOWN_RATING | do not change town rating
  DC_FORCE_CLEAR_TILE | do not only remove the object on the tile, but also clear any water left on it

Definition at line 281 of file command_type.h.

enum FlaggedCommands

Defines some flags.

This enumeration defines some flags which are binary-or'ed on a command.

Enumerator:

  CMD_NETWORK_COMMAND | execute the command without sending it on the network
  CMD_NO_TEST_IF_IN_NETWORK | When enabled, the command will bypass the no-DC_EXEC round if in network.
  CMD_FLAGS_MASK | mask for all command flags
  CMD_ID_MASK | mask for the command ID

Definition at line 313 of file command_type.h.