OpenTTD
Data Structures | Macros | Typedefs | Enumerations
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...
 

Macros

#define CMD_MSG(x)   ((x) << 16)
 Used to combine a StringID with the command. More...
 

Typedefs

typedef CommandCost CommandProc(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Defines the callback type for all command handler functions. More...
 
typedef void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
 Define a callback function for the client, after the command is finished. More...
 

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_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_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_TOWN_CARGO_GOAL, CMD_TOWN_GROWTH_RATE, 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_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_REPLACE_PROTECTION, CMD_MOVE_ORDER,
  CMD_CHANGE_TIMETABLE, CMD_SET_VEHICLE_ON_TIME, CMD_AUTOFILL_TIMETABLE, CMD_SET_TIMETABLE_START,
  CMD_OPEN_CLOSE_AIRPORT, 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_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  FlaggedCommands { CMD_NETWORK_COMMAND = 0x0100, CMD_FLAGS_MASK = 0xFF00, CMD_ID_MASK = 0x00FF }
 Defines some flags. 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
}
 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

◆ CMD_MSG

#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
xThe StringID to combine with a command-id

Definition at line 366 of file command_type.h.

Referenced by BuildBridgeWindow::BridgeSpeedSorter(), ChangeTimetableStartCallback(), CommonRaiseLowerBigLand(), GUIPlaceProcDragXY(), CompanyFinancesWindow::OnClick(), VehicleDetailsWindow::OnClick(), BuyCompanyWindow::OnClick(), DepotWindow::OnDragDrop(), OrdersWindow::OnDragDrop(), VehicleDetailsWindow::OnDropdownSelect(), BuildTreesWindow::OnPlaceMouseUp(), TerraformToolbarWindow::OnPlaceObject(), BuildObjectWindow::OnPlaceObject(), BuildRailToolbarWindow::OnPlaceObject(), CompanyWindow::OnPlaceObject(), WaypointWindow::OnQueryTextFinished(), TownViewWindow::OnQueryTextFinished(), VehicleGroupWindow::OnQueryTextFinished(), DepotWindow::OnQueryTextFinished(), OrdersWindow::OnQueryTextFinished(), BuildVehicleWindow::OnQueryTextFinished(), StationViewWindow::OnQueryTextFinished(), VehicleDetailsWindow::OnQueryTextFinished(), DepotWindow::OnVehicleSelect(), OrdersWindow::OrderClick_Delete(), OrdersWindow::OrderClick_FullLoad(), OrdersWindow::OrderClick_NearestDepot(), OrdersWindow::OrderClick_Nonstop(), OrdersWindow::OrderClick_Service(), OrdersWindow::OrderClick_Skip(), OrdersWindow::OrderClick_Unload(), PlaceProc_Sign(), RenameSign(), and ShowBuildBridgeWindow().

Typedef Documentation

◆ CommandCallback

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
resultThe result of the executed command
tileThe tile of the command action
p1Additional data of the command
p1Additional data of the command
See also
CommandProc

Definition at line 467 of file command_type.h.

◆ CommandProc

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
tileThe tile to apply a command on
flagsFlags for the command, from the DC_* enumeration
p1Additional data for the command
p2Additional data for the command
textAdditional text
Returns
The CommandCost of the command, which can be succeeded or failed.

Definition at line 439 of file command_type.h.

Enumeration Type Documentation

◆ 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

Definition at line 384 of file command_type.h.

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

◆ Commands

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_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_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_TOWN_CARGO_GOAL 

set the goal of a cargo for a town

CMD_TOWN_GROWTH_RATE 

set the town growth rate

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_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_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_OPEN_CLOSE_AIRPORT 

open/close an airport to incoming aircraft

CMD_END 

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

Definition at line 177 of file command_type.h.

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

◆ 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_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 340 of file command_type.h.

◆ 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_FLAGS_MASK 

mask for all command flags

CMD_ID_MASK 

mask for the command ID

Definition at line 373 of file command_type.h.