Defines | Functions | Variables

command.cpp File Reference

Handling of commands. More...

#include "stdafx.h"
#include "landscape.h"
#include "error.h"
#include "gui.h"
#include "command_func.h"
#include "network/network_type.h"
#include "network/network.h"
#include "genworld.h"
#include "strings_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, (CommandFlags)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)
CommandFlags 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 CmdTownGrowthRate
CommandProc CmdTownCargoGoal
CommandProc CmdTownSetText
CommandProc CmdExpandTown
CommandProc CmdDeleteTown
CommandProc CmdChangeSetting
CommandProc CmdChangeCompanySetting
CommandProc CmdOrderRefit
CommandProc CmdCloneOrder
CommandProc CmdClearArea
CommandProc CmdGiveMoney
CommandProc CmdMoneyCheat
CommandProc CmdBuildCanal
CommandProc CmdBuildLock
CommandProc CmdCreateSubsidy
CommandProc CmdCompanyCtrl
CommandProc CmdCustomNewsItem
CommandProc CmdCreateGoal
CommandProc CmdRemoveGoal
CommandProc CmdGoalQuestion
CommandProc CmdGoalQuestionAnswer
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
CommandProc CmdOpenCloseAirport
static const Command _command_proc_table []
 The master command table.
static int _docommand_recursive = 0

Detailed Description

Handling of commands.

Definition in file command.cpp.


Define Documentation

#define return_dcpi (   cmd,
  clear 
)    { _docommand_recursive = 0; ClearStorageChanges(clear); return cmd; }

Helper to deduplicate the code for returning.

Parameters:
cmd the command cost to return.
clear whether to keep the storage changes or not.

Definition at line 580 of file command.cpp.

Referenced by DoCommandPInternal().


Function Documentation

CommandCost DoCommand ( const CommandContainer container,
DoCommandFlag  flags 
)

Shorthand for calling the long DoCommand with a container.

Parameters:
container Container with (almost) all information
flags Flags for the command and how to execute the command
See also:
CommandProc
Returns:
the cost

Definition at line 408 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(), ChangeOwnershipOfCompanyItems(), CheckFlatLand(), CheckFlatLandRailStation(), CheckFlatLandRoadStop(), CheckIfCanLevelIndustryPlatform(), CheckIfIndustryTilesAreFree(), ClearMakeHouseTile(), CmdAddSharedVehicleGroup(), CmdBuildBridge(), CmdBuildBuoy(), CmdBuildCanal(), CmdBuildDock(), CmdBuildLongRoad(), CmdBuildObject(), CmdBuildRailWagon(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildShipDepot(), CmdBuildSingleRail(), CmdBuildTrainDepot(), CmdBuildTunnel(), CmdClearArea(), CmdCloneVehicle(), CmdDeleteGroup(), 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(), LoadUnloadVehicle(), NormalizeTrainVehInDepot(), LandInfoWindow::OnInit(), BuildRoadToolbarWindow::OnPlacePresize(), BuildRailToolbarWindow::OnPlacePresize(), RemoveRailStation(), RemoveRailWaypoint(), RemoveRoad(), ReplaceChain(), ReplaceFreeUnit(), ResetLandscapeConfirmationCallback(), SearchLumberMillTrees(), SendAllVehiclesToDepot(), Vehicle::SendToDepot(), ShowBuildBridgeWindow(), ShowNewGrfVehicleError(), StationJoinerNeeded(), TownActionBuildStatue(), TryClearTile(), UpdateOrderDest(), and VehicleEnterDepot().

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.

Parameters:
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
See also:
CommandProc
Returns:
the cost

Definition at line 426 of file command.cpp.

References CheckCompanyHasMoney(), CMD_ERROR, DC_ALL_TILES, DC_BANKRUPT, DC_EXEC, DC_QUERY_COST, error(), CommandCost::Failed(), IsValidTile(), MapSize(), Command::proc, SetTownRatingTestMode(), and SubtractMoneyFromCompany().

bool DoCommandP ( const CommandContainer container,
bool  my_cmd 
)

Shortcut for the long DoCommandP when having a container with the data.

Parameters:
container the container with information.
my_cmd indicator if the command is from a company or server (to display error messages for a user)
Returns:
true if the command succeeded, else false

Definition at line 499 of file command.cpp.

References CommandContainer::callback, CommandContainer::cmd, DoCommandP(), CommandContainer::p1, CommandContainer::p2, CommandContainer::text, and CommandContainer::tile.

Referenced by AskUnsafeUnpauseCallback(), CcBuildWagon(), ChangeTimetableStartCallback(), CheckPauseHelper(), CheckTrainsLengths(), ClickMoneyCheat(), CommonRaiseLowerBigLand(), CompanyCheckBankrupt(), ConnectRoadToStructure(), DoCommandP(), GenerateDesertArea(), GenericPlaceSignals(), GUIPlaceProcDragXY(), HandleAutoSignalPlacement(), MaybeStartNewCompany(), MenuClickCompany(), NetworkAutoCleanCompanies(), NetworkExecuteLocalCommandQueue(), VehicleViewWindow::OnClick(), VehicleDetailsWindow::OnClick(), VehicleListWindow::OnClick(), RefitWindow::OnClick(), TownViewWindow::OnClick(), TownAuthorityWindow::OnClick(), TimetableWindow::OnClick(), SelectStationWindow< T >::OnClick(), StationViewWindow::OnClick(), GameDifficultyWindow::OnClick(), OrdersWindow::OnClick(), BuildIndustryWindow::OnClick(), VehicleGroupWindow::OnClick(), GoalQuestionWindow::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(), ReplaceVehicleWindow::ReplaceClick_StartReplace(), OrderBackup::ResetUser(), SetCompanySetting(), SetSettingValue(), ShowBuildBridgeWindow(), ShowSelectBaseStationIfNeeded(), and StartStopVehicle().

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.

Parameters:
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)
Returns:
true if the command succeeded, else false.

Definition at line 519 of file command.cpp.

References _generating_world, _networking, _pause_mode, _shift_pressed, CMD_CLIENT_ID, CMD_ID_MASK, CMD_NETWORK_COMMAND, DoCommandPInternal(), CommandCost::Failed(), GB(), GetCommandFlags(), CommandCost::GetCost(), CommandCost::GetErrorMessage(), CommandCost::GetTextRefStack(), CommandCost::GetTextRefStackSize(), IsCommandAllowedWhilePaused(), IsLocalCompany(), PM_UNPAUSED, ShowCostOrIncomeAnimation(), ShowErrorMessage(), ShowEstimatedCostOrIncome(), CommandCost::Succeeded(), TILE_SIZE, TileX(), TileY(), and WL_INFO.

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.

Parameters:
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
Returns:
the command cost of this function.

Definition at line 595 of file command.cpp.

References _current_company, _date, _date_fract, _generating_world, _local_company, _networking, Backup< T >::Change(), CheckCompanyHasMoney(), ClearStorageChanges(), CMD_ALL_TILES, CMD_CLIENT_ID, CMD_COMPANY_CTRL, CMD_ERROR, CMD_FLAGS_MASK, CMD_NETWORK_COMMAND, CMD_SPECTATOR, CommandFlagsToDCFlags(), COMPANY_SPECTATOR, DC_EXEC, DEBUG, CommandCost::Failed(), GetCommandFlags(), GetCommandName(), CommandCost::GetCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), IsValidTile(), CompanyProperties::last_build_coordinate, lengthof, MapSize(), NetworkSendCommand(), OWNER_DEITY, Command::proc, Backup< T >::Restore(), return_dcpi, SetDParam(), SetTownRatingTestMode(), SubtractMoneyFromCompany(), Backup< T >::Trash(), UpdateSignalsInBuffer(), and Backup< T >::Verify().

Referenced by 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.

Returns:
The available money of a company or INT64_MAX

Definition at line 486 of file command.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().

Referenced by CmdClearArea(), CmdFoundTown(), CmdLevelLand(), and CmdRemoveLongRoad().

CommandFlags GetCommandFlags ( uint32  cmd  ) 

This function mask the parameter with CMD_ID_MASK and returns the flags which belongs to the given command.

Parameters:
cmd The integer value of the command
Returns:
The flags for this command

Definition at line 351 of file command.cpp.

References Command::flags, and IsValidCommand().

Referenced by DoCommandP(), DoCommandPInternal(), GrowTownWithBridge(), ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND(), 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.

Parameters:
cmd The integer value of the command
Returns:
The name for this command

Definition at line 365 of file command.cpp.

References IsValidCommand(), and Command::name.

Referenced by DoCommandPInternal(), and ServerNetworkAdminSocketHandler::SendCmdNames().

bool IsCommandAllowedWhilePaused ( uint32  cmd  ) 

Returns whether the command is allowed while the game is paused.

Parameters:
cmd The command to check.
Returns:
True if the command is allowed while paused, false otherwise.

< 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 377 of file command.cpp.

References _settings_game, 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

Parameters:
cmd The integervalue of a command
Returns:
true if the command is valid (and got a CommandProc function)

Definition at line 337 of file command.cpp.

References lengthof, and Command::proc.

Referenced by GetCommandFlags(), GetCommandName(), IsCommandAllowedWhilePaused(), and NetworkGameSocketHandler::ReceiveCommand().


Variable Documentation

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 195 of file command.cpp.