Handling of commands. More...
#include "stdafx.h"
#include "landscape.h"
#include "gui.h"
#include "command_func.h"
#include "network/network_type.h"
#include "network/network.h"
#include "genworld.h"
#include "newgrf_storage.h"
#include "strings_func.h"
#include "gfx_func.h"
#include "texteff.hpp"
#include "town.h"
#include "date_func.h"
#include "company_func.h"
#include "company_base.h"
#include "signal_func.h"
#include "core/backup_type.hpp"
#include "object_base.h"
#include "table/strings.h"
Go to the source code of this file.
Defines | |
#define | DEF_CMD(proc, flags, type) {proc, #proc, flags, type} |
#define | return_dcpi(cmd, clear) { _docommand_recursive = 0; ClearStorageChanges(clear); return cmd; } |
Helper to deduplicate the code for returning. | |
Functions | |
bool | IsValidCommand (uint32 cmd) |
byte | GetCommandFlags (uint32 cmd) |
const char * | GetCommandName (uint32 cmd) |
bool | IsCommandAllowedWhilePaused (uint32 cmd) |
Returns whether the command is allowed while the game is paused. | |
CommandCost | DoCommand (const CommandContainer *container, DoCommandFlag flags) |
Shorthand for calling the long DoCommand with a container. | |
CommandCost | DoCommand (TileIndex tile, uint32 p1, uint32 p2, DoCommandFlag flags, uint32 cmd, const char *text) |
Money | GetAvailableMoneyForCommand () |
bool | DoCommandP (const CommandContainer *container, bool my_cmd) |
Shortcut for the long DoCommandP when having a container with the data. | |
bool | DoCommandP (TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback, const char *text, bool my_cmd) |
CommandCost | DoCommandPInternal (TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback, const char *text, bool my_cmd, bool estimate_only) |
Variables | |
CommandProc | CmdBuildRailroadTrack |
CommandProc | CmdRemoveRailroadTrack |
CommandProc | CmdBuildSingleRail |
CommandProc | CmdRemoveSingleRail |
CommandProc | CmdLandscapeClear |
CommandProc | CmdBuildBridge |
CommandProc | CmdBuildRailStation |
CommandProc | CmdRemoveFromRailStation |
CommandProc | CmdConvertRail |
CommandProc | CmdBuildSingleSignal |
CommandProc | CmdRemoveSingleSignal |
CommandProc | CmdTerraformLand |
CommandProc | CmdBuildObject |
CommandProc | CmdSellLandArea |
CommandProc | CmdBuildTunnel |
CommandProc | CmdBuildTrainDepot |
CommandProc | CmdBuildRailWaypoint |
CommandProc | CmdRenameWaypoint |
CommandProc | CmdRemoveFromRailWaypoint |
CommandProc | CmdBuildRoadStop |
CommandProc | CmdRemoveRoadStop |
CommandProc | CmdBuildLongRoad |
CommandProc | CmdRemoveLongRoad |
CommandProc | CmdBuildRoad |
CommandProc | CmdBuildRoadDepot |
CommandProc | CmdBuildAirport |
CommandProc | CmdBuildDock |
CommandProc | CmdBuildShipDepot |
CommandProc | CmdBuildBuoy |
CommandProc | CmdPlantTree |
CommandProc | CmdMoveRailVehicle |
CommandProc | CmdBuildVehicle |
CommandProc | CmdSellVehicle |
CommandProc | CmdRefitVehicle |
CommandProc | CmdSendVehicleToDepot |
CommandProc | CmdForceTrainProceed |
CommandProc | CmdReverseTrainDirection |
CommandProc | CmdClearOrderBackup |
CommandProc | CmdModifyOrder |
CommandProc | CmdSkipToOrder |
CommandProc | CmdDeleteOrder |
CommandProc | CmdInsertOrder |
CommandProc | CmdChangeServiceInt |
CommandProc | CmdBuildIndustry |
CommandProc | CmdSetCompanyManagerFace |
CommandProc | CmdSetCompanyColour |
CommandProc | CmdIncreaseLoan |
CommandProc | CmdDecreaseLoan |
CommandProc | CmdWantEnginePreview |
CommandProc | CmdRenameVehicle |
CommandProc | CmdRenameEngine |
CommandProc | CmdRenameCompany |
CommandProc | CmdRenamePresident |
CommandProc | CmdRenameStation |
CommandProc | CmdRenameDepot |
CommandProc | CmdPlaceSign |
CommandProc | CmdRenameSign |
CommandProc | CmdTurnRoadVeh |
CommandProc | CmdPause |
CommandProc | CmdBuyShareInCompany |
CommandProc | CmdSellShareInCompany |
CommandProc | CmdBuyCompany |
CommandProc | CmdFoundTown |
CommandProc | CmdRenameTown |
CommandProc | CmdDoTownAction |
CommandProc | CmdExpandTown |
CommandProc | CmdDeleteTown |
CommandProc | CmdChangeSetting |
CommandProc | CmdChangeCompanySetting |
CommandProc | CmdOrderRefit |
CommandProc | CmdCloneOrder |
CommandProc | CmdClearArea |
CommandProc | CmdGiveMoney |
CommandProc | CmdMoneyCheat |
CommandProc | CmdBuildCanal |
CommandProc | CmdBuildLock |
CommandProc | CmdCompanyCtrl |
CommandProc | CmdLevelLand |
CommandProc | CmdBuildSignalTrack |
CommandProc | CmdRemoveSignalTrack |
CommandProc | CmdSetAutoReplace |
CommandProc | CmdCloneVehicle |
CommandProc | CmdStartStopVehicle |
CommandProc | CmdMassStartStopVehicle |
CommandProc | CmdAutoreplaceVehicle |
CommandProc | CmdDepotSellAllVehicles |
CommandProc | CmdDepotMassAutoReplace |
CommandProc | CmdCreateGroup |
CommandProc | CmdRenameGroup |
CommandProc | CmdDeleteGroup |
CommandProc | CmdAddVehicleGroup |
CommandProc | CmdAddSharedVehicleGroup |
CommandProc | CmdRemoveAllVehiclesGroup |
CommandProc | CmdSetGroupReplaceProtection |
CommandProc | CmdMoveOrder |
CommandProc | CmdChangeTimetable |
CommandProc | CmdSetVehicleOnTime |
CommandProc | CmdAutofillTimetable |
CommandProc | CmdSetTimetableStart |
static const Command | _command_proc_table [] |
The master command table. | |
static int | _docommand_recursive = 0 |
Handling of commands.
Definition in file command.cpp.
#define return_dcpi | ( | cmd, | |||
clear | ) | { _docommand_recursive = 0; ClearStorageChanges(clear); return cmd; } |
Helper to deduplicate the code for returning.
cmd | the command cost to return. | |
clear | whether to keep the storage changes or not. |
Definition at line 559 of file command.cpp.
Referenced by DoCommandPInternal().
CommandCost DoCommand | ( | TileIndex | tile, | |
uint32 | p1, | |||
uint32 | p2, | |||
DoCommandFlag | flags, | |||
uint32 | cmd, | |||
const char * | text | |||
) |
This function executes a given command with the parameters from the CommandProc parameter list. Depending on the flags parameter it execute or test a command.
tile | The tile to apply the command on (for the CommandProc) | |
p1 | Additional data for the command (for the CommandProc) | |
p2 | Additional data for the command (for the CommandProc) | |
flags | Flags for the command and how to execute the command | |
cmd | The command-id to execute (a value of the CMD_* enums) | |
text | The text to pass |
Definition at line 405 of file command.cpp.
References CheckCompanyHasMoney(), CMD_ERROR, CMD_ID_MASK, DC_ALL_TILES, DC_BANKRUPT, DC_EXEC, DC_QUERY_COST, error(), CommandCost::Failed(), IsValidTile(), MapSize(), Command::proc, SetTownRatingTestMode(), and SubtractMoneyFromCompany().
CommandCost DoCommand | ( | const CommandContainer * | container, | |
DoCommandFlag | flags | |||
) |
Shorthand for calling the long DoCommand with a container.
container | Container with (almost) all information | |
flags | Flags for the command and how to execute the command |
Definition at line 387 of file command.cpp.
References CommandContainer::cmd, CMD_ID_MASK, DoCommand(), CommandContainer::p1, CommandContainer::p2, CommandContainer::text, and CommandContainer::tile.
Referenced by BuildReplacementVehicle(), CanBuildHouseHere(), CanBuildTramTrackOnTile(), CheckFlatLand(), CheckFlatLandRailStation(), CheckFlatLandRoadStop(), CheckIfCanLevelIndustryPlatform(), CheckIfIndustryTilesAreFree(), ClearMakeHouseTile(), CmdAddSharedVehicleGroup(), CmdBuildBridge(), CmdBuildBuoy(), CmdBuildCanal(), CmdBuildDock(), CmdBuildLongRoad(), CmdBuildObject(), CmdBuildRailWagon(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildShipDepot(), CmdBuildSingleRail(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdClearArea(), CmdCloneVehicle(), CmdDeleteTown(), CmdDepotMassAutoReplace(), CmdDepotSellAllVehicles(), CmdLevelLand(), CmdMassStartStopVehicle(), CmdMoveVehicle(), CmdPlantTree(), CmdRailTrackHelper(), CmdRemoveAllVehiclesGroup(), CmdRemoveLongRoad(), CmdRemoveSingleRail(), CmdRenamePresident(), CmdSignalTrackHelper(), CmdStartStopVehicle(), CmdTerraformLand(), CopyHeadSpecificThings(), DoBuildLock(), DoCommand(), DoCreateNewIndustry(), DoDryUp(), DoFloodTile(), OrderBackup::DoRestore(), FloodHalftile(), RefitWindow::GetCapacityString(), GrowTown(), GrowTownWithBridge(), GrowTownWithRoad(), IsRoadAllowedHere(), NormalizeTrainVehInDepot(), LandInfoWindow::OnInit(), BuildRoadToolbarWindow::OnPlacePresize(), BuildRailToolbarWindow::OnPlacePresize(), RemoveRailStation(), RemoveRailWaypoint(), RemoveRoad(), ReplaceChain(), ReplaceFreeUnit(), ResetLandscapeConfirmationCallback(), SearchLumberMillTrees(), SearchTileForStatue(), SendAllVehiclesToDepot(), Vehicle::SendToDepot(), ShowBuildBridgeWindow(), ShowNewGrfVehicleError(), StationJoinerNeeded(), TownActionBuildStatue(), UpdateOrderDest(), and VehicleEnterDepot().
bool DoCommandP | ( | TileIndex | tile, | |
uint32 | p1, | |||
uint32 | p2, | |||
uint32 | cmd, | |||
CommandCallback * | callback, | |||
const char * | text, | |||
bool | my_cmd | |||
) |
Toplevel network safe docommand function for the current company. Must not be called recursively. The callback is called when the command succeeded or failed. The parameters tile, p1, and p2 are from the CommandProc function. The parameter cmd is the command to execute. The parameter my_cmd is used to indicate if the command is from a company or the server.
tile | The tile to perform a command on (see CommandProc) | |
p1 | Additional data for the command (see CommandProc) | |
p2 | Additional data for the command (see CommandProc) | |
cmd | The command to execute (a CMD_* value) | |
callback | A callback function to call after the command is finished | |
text | The text to pass | |
my_cmd | indicator if the command is from a company or server (to display error messages for a user) |
true
if the command succeeded, else false
. Definition at line 498 of file command.cpp.
References _networking, _pause_mode, _shift_pressed, CLIENT_ID_SERVER, CMD_CLIENT_ID, CMD_ID_MASK, CMD_NETWORK_COMMAND, CMD_PAUSE, DoCommandPInternal(), CommandCost::Failed(), GB(), GetCommandFlags(), CommandCost::GetCost(), CommandCost::GetErrorMessage(), IsCommandAllowedWhilePaused(), IsGeneratingWorld(), IsLocalCompany(), PM_UNPAUSED, ShowCostOrIncomeAnimation(), ShowErrorMessage(), ShowEstimatedCostOrIncome(), CommandCost::Succeeded(), TILE_SIZE, TileX(), TileY(), and WL_INFO.
bool DoCommandP | ( | const CommandContainer * | container, | |
bool | my_cmd | |||
) |
Shortcut for the long DoCommandP when having a container with the data.
container | the container with information. | |
my_cmd | indicator if the command is from a company or server (to display error messages for a user) |
Definition at line 478 of file command.cpp.
References CommandContainer::callback, CommandContainer::cmd, DoCommandP(), CommandContainer::p1, CommandContainer::p2, CommandContainer::text, and CommandContainer::tile.
Referenced by AskUnsafeUnpauseCallback(), ChangeTimetableStartCallback(), CheckPauseHelper(), CheckTrainsLengths(), ClickMoneyCheat(), CommonRaiseLowerBigLand(), CompanyCheckBankrupt(), ConnectRoadToStructure(), DoCommandP(), GenerateDesertArea(), GenericPlaceSignals(), GUIPlaceProcDragXY(), HandleAutoSignalPlacement(), MaybeStartNewCompany(), NetworkExecuteLocalCommandQueue(), VehicleViewWindow::OnClick(), VehicleDetailsWindow::OnClick(), VehicleListWindow::OnClick(), RefitWindow::OnClick(), TownViewWindow::OnClick(), TownAuthorityWindow::OnClick(), TimetableWindow::OnClick(), SelectStationWindow< T >::OnClick(), GameDifficultyWindow::OnClick(), OrdersWindow::OnClick(), BuildIndustryWindow::OnClick(), VehicleGroupWindow::OnClick(), EnginePreviewWindow::OnClick(), DepotWindow::OnClick(), BuyCompanyWindow::OnClick(), CompanyWindow::OnClick(), SelectCompanyManagerFaceWindow::OnClick(), SelectCompanyLiveryWindow::OnClick(), CompanyFinancesWindow::OnClick(), BuildVehicleWindow::OnClick(), ReplaceVehicleWindow::OnClick(), AIDebugWindow::OnClick(), OrdersWindow::OnDragDrop(), VehicleGroupWindow::OnDragDrop(), DepotWindow::OnDragDrop(), VehicleListWindow::OnDropdownSelect(), OrdersWindow::OnDropdownSelect(), VehicleGroupWindow::OnDropdownSelect(), SelectCompanyLiveryWindow::OnDropdownSelect(), AIDebugWindow::OnInvalidateData(), MainWindow::OnKeyPress(), 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_Refit(), OrdersWindow::OrderClick_Service(), OrdersWindow::OrderClick_Skip(), OrdersWindow::OrderClick_StopSharing(), OrdersWindow::OrderClick_Unload(), PlaceExtraDepotRail(), PlaceProc_Object(), PlaceProc_Sign(), PlaceRail_Waypoint(), RenameSign(), OrderBackup::ResetUser(), SetCompanySetting(), SetSettingValue(), ShowBuildBridgeWindow(), ShowSelectBaseStationIfNeeded(), and StartStopVehicle().
CommandCost DoCommandPInternal | ( | TileIndex | tile, | |
uint32 | p1, | |||
uint32 | p2, | |||
uint32 | cmd, | |||
CommandCallback * | callback, | |||
const char * | text, | |||
bool | my_cmd, | |||
bool | estimate_only | |||
) |
Helper function for the toplevel network safe docommand function for the current company.
tile | The tile to perform a command on (see CommandProc) | |
p1 | Additional data for the command (see CommandProc) | |
p2 | Additional data for the command (see CommandProc) | |
cmd | The command to execute (a CMD_* value) | |
callback | A callback function to call after the command is finished | |
text | The text to pass | |
my_cmd | indicator if the command is from a company or server (to display error messages for a user) | |
estimate_only | whether to give only the estimate or also execute the command |
Definition at line 574 of file command.cpp.
References _current_company, _date, _local_company, _networking, Backup< T >::Change(), CheckCompanyHasMoney(), CMD_ALL_TILES, CMD_CLIENT_ID, CMD_COMPANY_CTRL, CMD_ERROR, CMD_FLAGS_MASK, CMD_ID_MASK, CMD_NETWORK_COMMAND, CMD_NO_TEST, CMD_NO_TEST_IF_IN_NETWORK, CMD_SERVER, CMD_SPECTATOR, CommandFlagsToDCFlags(), COMPANY_SPECTATOR, DC_EXEC, DEBUG, CommandCost::Failed(), GetCommandFlags(), GetCommandName(), CommandCost::GetCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), IsValidTile(), CompanyProperties::last_build_coordinate, lengthof, MapSize(), NetworkSendCommand(), Command::proc, Backup< T >::Restore(), return_dcpi, SetDParam(), SetTownRatingTestMode(), SubtractMoneyFromCompany(), Backup< T >::Trash(), UpdateSignalsInBuffer(), and Backup< T >::Verify().
Referenced by AIObject::DoCommand(), DoCommandP(), and OrderBackup::Reset().
Money GetAvailableMoneyForCommand | ( | ) |
This functions returns the money which can be used to execute a command. This is either the money of the current company or INT64_MAX if there is no such a company "at the moment" like the server itself.
Definition at line 465 of file command.cpp.
References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().
Referenced by CmdClearArea(), CmdFoundTown(), CmdLevelLand(), and CmdRemoveLongRoad().
byte GetCommandFlags | ( | uint32 | cmd | ) |
This function mask the parameter with CMD_ID_MASK and returns the flags which belongs to the given command.
cmd | The integer value of the command |
Definition at line 330 of file command.cpp.
References CMD_ID_MASK, Command::flags, and IsValidCommand().
Referenced by DEF_GAME_RECEIVE_COMMAND(), AIObject::DoCommand(), DoCommandP(), DoCommandPInternal(), GrowTownWithBridge(), NetworkGameSocketHandler::ReceiveCommand(), ShowBuildBridgeWindow(), and StationJoinerNeeded().
const char* GetCommandName | ( | uint32 | cmd | ) |
This function mask the parameter with CMD_ID_MASK and returns the name which belongs to the given command.
cmd | The integer value of the command |
Definition at line 344 of file command.cpp.
References CMD_ID_MASK, IsValidCommand(), and Command::name.
Referenced by DoCommandPInternal().
bool IsCommandAllowedWhilePaused | ( | uint32 | cmd | ) |
Returns whether the command is allowed while the game is paused.
cmd | The command to check. |
< 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
Definition at line 356 of file command.cpp.
References _settings_game, CMD_ID_MASK, CMDPL_ALL_ACTIONS, CMDPL_NO_ACTIONS, CMDPL_NO_CONSTRUCTION, CMDPL_NO_LANDSCAPING, CMDT_END, ConstructionSettings::command_pause_level, GameSettings::construction, IsValidCommand(), lengthof, and Command::type.
Referenced by DoCommandP(), CommandQueue::Peek(), and CommandQueue::Pop().
bool IsValidCommand | ( | uint32 | cmd | ) |
This function range-checks a cmd, and checks if the cmd is not NULL
cmd | The integervalue of a command |
Definition at line 316 of file command.cpp.
References CMD_ID_MASK, lengthof, and Command::proc.
Referenced by GetCommandFlags(), GetCommandName(), IsCommandAllowedWhilePaused(), and NetworkGameSocketHandler::ReceiveCommand().
const Command _command_proc_table[] [static] |
The master command table.
This table contains all possible CommandProc functions with the flags which belongs to it. The indices are the same as the value from the CMD_* enums.
Definition at line 185 of file command.cpp.