OpenTTD Source: src/command_type.h File Reference

OpenTTD Source 13.1

Data Structures | Macros | Typedefs | Enumerations
command_type.h File Reference
`#include "economy_type.h"`
`#include "strings_type.h"`
`#include "tile_type.h"`
`#include <vector>`

Go to the source code of this file.

## Data Structures
class | CommandCost
| Common return value for all commands. More...
struct | CommandFunctionTraitHelper< T >
struct | CommandFunctionTraitHelper< CommandCost(*)(DoCommandFlag, Targs...)>
struct | CommandFunctionTraitHelper< Tret< CommandCost, Tretargs... >(*)(DoCommandFlag, Targs...)>
struct | CommandTraits< Tcmd >
| Defines the traits of a command. More...

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

## Typedefs
typedef std::vector< byte > | 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. More...
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. More...

## Enumerations
enum | Commands : uint16 { 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_OBJECT_AREA, 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_CONVERT_ROAD, 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_SET_VEHICLE_VISIBILITY, 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_INDUSTRY_CTRL, CMD_SET_COMPANY_MANAGER_FACE, CMD_SET_COMPANY_COLOUR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN, CMD_WANT_ENGINE_PREVIEW, CMD_ENGINE_CTRL, 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_TOWN_CARGO_GOAL, CMD_TOWN_GROWTH_RATE, CMD_TOWN_RATING, CMD_TOWN_SET_TEXT, CMD_EXPAND_TOWN, CMD_DELETE_TOWN, CMD_ORDER_REFIT, CMD_CLONE_ORDER, CMD_CLEAR_AREA, CMD_MONEY_CHEAT, CMD_CHANGE_BANK_BALANCE, CMD_BUILD_CANAL, CMD_CREATE_SUBSIDY, CMD_COMPANY_CTRL, CMD_CUSTOM_NEWS_ITEM, CMD_CREATE_GOAL, CMD_REMOVE_GOAL, CMD_SET_GOAL_TEXT, CMD_SET_GOAL_PROGRESS, CMD_SET_GOAL_COMPLETED, CMD_GOAL_QUESTION, CMD_GOAL_QUESTION_ANSWER, CMD_CREATE_STORY_PAGE, CMD_CREATE_STORY_PAGE_ELEMENT, CMD_UPDATE_STORY_PAGE_ELEMENT, CMD_SET_STORY_PAGE_TITLE, CMD_SET_STORY_PAGE_DATE, CMD_SHOW_STORY_PAGE, CMD_REMOVE_STORY_PAGE, CMD_REMOVE_STORY_PAGE_ELEMENT, CMD_SCROLL_VIEWPORT, CMD_STORY_PAGE_BUTTON, 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_ALTER_GROUP, CMD_ADD_VEHICLE_GROUP, CMD_ADD_SHARED_VEHICLE_GROUP, CMD_REMOVE_ALL_VEHICLES_GROUP, CMD_SET_GROUP_FLAG, CMD_SET_GROUP_LIVERY, CMD_MOVE_ORDER, CMD_CHANGE_TIMETABLE, CMD_BULK_CHANGE_TIMETABLE, CMD_SET_VEHICLE_ON_TIME, CMD_AUTOFILL_TIMETABLE, CMD_SET_TIMETABLE_START, CMD_OPEN_CLOSE_AIRPORT, CMD_CREATE_LEAGUE_TABLE, CMD_CREATE_LEAGUE_TABLE_ELEMENT, CMD_UPDATE_LEAGUE_TABLE_ELEMENT_DATA, CMD_UPDATE_LEAGUE_TABLE_ELEMENT_SCORE, CMD_REMOVE_LEAGUE_TABLE_ELEMENT, 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_TEST_TOWN_RATING = 0x020, DC_BANKRUPT = 0x040, DC_AUTOREPLACE = 0x080, DC_NO_CARGO_CAP_CHECK = 0x100, DC_ALL_TILES = 0x200, DC_NO_MODIFY_TOWN_RATING = 0x400, DC_FORCE_CLEAR_TILE = 0x800 }
| List of flags for a command. More...
enum | CommandFlags { CMD_SERVER = 0x001, CMD_SPECTATOR = 0x002, CMD_OFFLINE = 0x004, CMD_AUTO = 0x008, CMD_ALL_TILES = 0x010, CMD_NO_TEST = 0x020, CMD_NO_WATER = 0x040, CMD_CLIENT_ID = 0x080, CMD_DEITY = 0x100, CMD_STR_CTRL = 0x200, CMD_NO_EST = 0x400, CMD_LOCATION = 0x800 }
| 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.

## Macro Definition Documentation

## ◆ DEF_CMD_TRAIT

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

Value:
template<> struct CommandTraits<cmd_> { \
using ProcType = decltype(&proc_); \
using Args = typename CommandFunctionTraitHelper<ProcType>::Args; \
using RetTypes = typename CommandFunctionTraitHelper<ProcType>::RetTypes; \
using CbArgs = typename CommandFunctionTraitHelper<ProcType>::CbArgs; \
using RetCallbackProc = typename CommandFunctionTraitHelper<ProcType>::CbProcType; \
static constexpr Commands cmd = cmd_; \
static constexpr auto &proc = proc_; \
static constexpr CommandFlags flags = (CommandFlags)(flags_); \
static constexpr CommandType type = type_; \
static inline constexpr const char *name = #proc_; \
};

Definition at line 436 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

  cmd | The command that was executed
  result | The result of the executed command
  tile | The tile of the command action

See also
  CommandProc

Definition at line 465 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

  cmd | The command that was executed
  result | The result of the executed command
  tile | The tile of the command action
  data | Additional data of the command
  result_data | Additional returned data from the command

See also
  CommandProc

Definition at line 481 of file command_type.h.

## Enumeration Type Documentation

## ◆ CommandFlags

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.
CMD_DEITY | the command may be executed by COMPANY_DEITY
CMD_STR_CTRL | the command's string may contain control strings
CMD_NO_EST | the command is never estimated.
CMD_LOCATION | the command has implicit location argument.

Definition at line 377 of file command_type.h.

## ◆ CommandPauseLevel

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 409 of file command_type.h.

## ◆ Commands

enum Commands : uint16

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_OBJECT_AREA | build an area of objects
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_CONVERT_ROAD | convert a road type
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_SET_VEHICLE_VISIBILITY | hide or unhide a vehicle in the build vehicle and autoreplace GUIs
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_INDUSTRY_CTRL | change industry properties
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_ENGINE_CTRL | control availability of the engine for companies
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_TOWN_CARGO_GOAL | set the goal of a cargo for a town
CMD_TOWN_GROWTH_RATE | set the town growth rate
CMD_TOWN_RATING | set rating of a company in a town
CMD_TOWN_SET_TEXT | set the custom text of a town
CMD_EXPAND_TOWN | expand a town
CMD_DELETE_TOWN | delete a town
CMD_ORDER_REFIT | change the refit information 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_CHANGE_BANK_BALANCE | change bank balance to charge costs or give money from a GS
CMD_BUILD_CANAL | build a canal
CMD_CREATE_SUBSIDY | create a new subsidy
CMD_COMPANY_CTRL | used in multiplayer to create a new companies etc.
CMD_CUSTOM_NEWS_ITEM | create a custom news message
CMD_CREATE_GOAL | create a new goal
CMD_REMOVE_GOAL | remove a goal
CMD_SET_GOAL_TEXT | update goal text of a goal
CMD_SET_GOAL_PROGRESS | update goal progress text of a goal
CMD_SET_GOAL_COMPLETED | update goal completed status of a goal
CMD_GOAL_QUESTION | ask a goal related question
CMD_GOAL_QUESTION_ANSWER | answer(s) to CMD_GOAL_QUESTION
CMD_CREATE_STORY_PAGE | create a new story page
CMD_CREATE_STORY_PAGE_ELEMENT | create a new story page element
CMD_UPDATE_STORY_PAGE_ELEMENT | update a story page element
CMD_SET_STORY_PAGE_TITLE | update title of a story page
CMD_SET_STORY_PAGE_DATE | update date of a story page
CMD_SHOW_STORY_PAGE | show a story page
CMD_REMOVE_STORY_PAGE | remove a story page
CMD_REMOVE_STORY_PAGE_ELEMENT | remove a story page element
CMD_SCROLL_VIEWPORT | scroll main viewport of players
CMD_STORY_PAGE_BUTTON | selection via story page button
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 setting
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_ALTER_GROUP | alter 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_FLAG | set/clear a flag for a group
CMD_SET_GROUP_LIVERY | set the livery for a group
CMD_MOVE_ORDER | move an order
CMD_CHANGE_TIMETABLE | change the timetable for a vehicle
CMD_BULK_CHANGE_TIMETABLE | change the timetable for all orders of 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_OPEN_CLOSE_AIRPORT | open/close an airport to incoming aircraft
CMD_CREATE_LEAGUE_TABLE | create a new league table
CMD_CREATE_LEAGUE_TABLE_ELEMENT | create a new element in a league table
CMD_UPDATE_LEAGUE_TABLE_ELEMENT_DATA | update the data fields of a league table element
CMD_UPDATE_LEAGUE_TABLE_ELEMENT_SCORE | update the score of a league table element
CMD_REMOVE_LEAGUE_TABLE_ELEMENT | remove a league table element
CMD_END | Must ALWAYS be on the end of this list!! (period)

Definition at line 176 of file command_type.h.

## ◆ CommandType

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 394 of file command_type.h.

## ◆ DoCommandFlag

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_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_NO_CARGO_CAP_CHECK | 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
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 355 of file command_type.h.

Commands
Commands
List of commands.
Definition: command_type.h:176
CommandType
CommandType
Types of commands we have.
Definition: command_type.h:394
CommandTraits
Defines the traits of a command.
Definition: command_type.h:434
CommandFlags
CommandFlags
Command flags for the command table _command_proc_table.
Definition: command_type.h:377
CommandFunctionTraitHelper
Definition: command_type.h:417