Data Structures | Functions | Variables

# vehicle_cmd.cpp File Reference

Commands for vehicles. More...

`#include "stdafx.h"`
`#include "roadveh.h"`
`#include "news_func.h"`
`#include "airport.h"`
`#include "cmd_helper.h"`
`#include "command_func.h"`
`#include "company_func.h"`
`#include "train.h"`
`#include "aircraft.h"`
`#include "newgrf_text.h"`
`#include "vehicle_func.h"`
`#include "string_func.h"`
`#include "depot_map.h"`
`#include "vehiclelist.h"`
`#include "engine_func.h"`
`#include "articulated_vehicles.h"`
`#include "autoreplace_gui.h"`
`#include "group.h"`
`#include "order_backup.h"`
`#include "ship.h"`
`#include "newgrf.h"`
`#include "company_base.h"`
`#include "table/strings.h"`

Go to the source code of this file.

## Data Structures
struct | RefitResult
| Helper structure for RefitVehicle(). More...
## Functions
CommandCost | CmdBuildRailVehicle (TileIndex tile, DoCommandFlag flags, const Engine *e, uint16 data, Vehicle **v)
| Build a railroad vehicle.
CommandCost | CmdBuildRoadVehicle (TileIndex tile, DoCommandFlag flags, const Engine *e, uint16 data, Vehicle **v)
| Build a road vehicle.
CommandCost | CmdBuildShip (TileIndex tile, DoCommandFlag flags, const Engine *e, uint16 data, Vehicle **v)
| Build a ship.
CommandCost | CmdBuildAircraft (TileIndex tile, DoCommandFlag flags, const Engine *e, uint16 data, Vehicle **v)
| Build an aircraft.
CommandCost | CmdBuildVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Build a vehicle.
CommandCost | CmdSellRailWagon (DoCommandFlag flags, Vehicle *v, uint16 data, uint32 user)
| Sell a (single) train wagon/engine.
CommandCost | CmdSellVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Sell a vehicle.
static int | GetRefitCostFactor (const Vehicle *v, EngineID engine_type, CargoID new_cid, byte new_subtype, bool *auto_refit_allowed)
| Helper to run the refit cost callback.
static CommandCost | GetRefitCost (const Vehicle *v, EngineID engine_type, CargoID new_cid, byte new_subtype, bool *auto_refit_allowed)
| Learn the price of refitting a certain engine.
static CommandCost | RefitVehicle (Vehicle *v, bool only_this, uint8 num_vehicles, CargoID new_cid, byte new_subtype, DoCommandFlag flags, bool auto_refit)
| Refits a vehicle (chain).
CommandCost | CmdRefitVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Refits a vehicle to the specified cargo type.
CommandCost | CmdStartStopVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Start/Stop a vehicle.
CommandCost | CmdMassStartStopVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Starts or stops a lot of vehicles.
CommandCost | CmdDepotSellAllVehicles (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Sells all vehicles in a depot.
CommandCost | CmdDepotMassAutoReplace (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Autoreplace all vehicles in the depot.
static bool | IsUniqueVehicleName (const char *name)
| Test if a name is unique among vehicle names.
static void | CloneVehicleName (const Vehicle *src, Vehicle *dst)
| Clone the custom name of a vehicle, adding or incrementing a number.
CommandCost | CmdCloneVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Clone a vehicle.
static CommandCost | SendAllVehiclesToDepot (DoCommandFlag flags, bool service, const VehicleListIdentifier &vli)
| Send all vehicles of type to depots.
CommandCost | CmdSendVehicleToDepot (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Send a vehicle to the depot.
CommandCost | CmdRenameVehicle (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Give a custom name to your vehicle.
CommandCost | CmdChangeServiceInt (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Change the service interval of a vehicle.
## Variables
const uint32 | _veh_build_proc_table []
const uint32 | _veh_sell_proc_table []
const uint32 | _veh_refit_proc_table []
const uint32 | _send_to_depot_proc_table []

## Detailed Description

Commands for vehicles.

Definition in file vehicle_cmd.cpp.

## Function Documentation

static void CloneVehicleName | ( | const Vehicle * | src,
|  | Vehicle * | dst |
| ) |  |  | `[static]`

Clone the custom name of a vehicle, adding or incrementing a number.

Parameters:

  | src | Source vehicle, with a custom name.
  | dst | Destination vehicle.

Definition at line 707 of file vehicle_cmd.cpp.

References IsUniqueVehicleName(), lastof, BaseConsist::name, seprintf(), strecat(), and strecpy().

Referenced by CmdCloneVehicle().

CommandCost CmdBuildAircraft | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | const Engine * | e,
|  | uint16 | data,
|  | Vehicle ** | ret |
| ) |  |  |

Build an aircraft.

Parameters:

  | tile | tile of the depot where aircraft is built.
  | flags | type of operation.
  | e | the engine to build.
  | data | unused.
  | ret[out] | the vehicle that has been built.

Returns:
  the cost of this operation or an error.

Definition at line 237 of file aircraft_cmd.cpp.

References _cur_year, _current_company, _date, Vehicle::acceleration, AIR_AIRCRAFT, AIR_HELICOPTER, Station::airport, Vehicle::build_year, CanVehicleUseStation(), Vehicle::cargo_cap, Vehicle::cargo_type, CMD_ERROR, Vehicle::cur_image, Vehicle::date_of_last_service, DC_EXEC, Engine::DetermineCapacity(), Vehicle::direction, ENGINE_EXCLUSIVE_PREVIEW, Vehicle::engine_type, Engine::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), SpecializedStation< Station, false >::GetByTile(), Engine::GetDefaultCargoType(), Airport::GetHangarNum(), Airport::GetHangarTile(), Engine::GetLifeLengthInDays(), GetStationIndex(), GetVehiclePosOnBuild(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_DIR, Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::last_station_visited, AircraftVehicleInfo::mail_capacity, Vehicle::max_age, Vehicle::owner, AircraftVehicleInfo::passenger_capacity, Aircraft::pos, Aircraft::previous_pos, Vehicle::random_bits, Engine::reliability, Vehicle::reliability, Engine::reliability_spd_dec, Vehicle::reliability_spd_dec, ROTOR_Z_OFFSET, SetBit(), Vehicle::SetNext(), Vehicle::spritenum, Aircraft::state, AircraftVehicleInfo::subtype, Vehicle::subtype, Aircraft::targetairport, Vehicle::tile, TILE_SIZE, TileX(), TileY(), UpdateAircraftCache(), Aircraft::UpdateDeltaXY(), VehicleRandomBits(), VehicleUpdatePosition(), Vehicle::vehstatus, VF_BUILT_AS_PROTOTYPE, VS_HIDDEN, VS_STOPPED, VS_UNCLICKABLE, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CmdBuildVehicle().

CommandCost CmdBuildRailVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | const Engine * | e,
|  | uint16 | data,
|  | Vehicle ** | ret |
| ) |  |  |

Build a railroad vehicle.

Parameters:

  | tile | tile of the depot where rail-vehicle is built.
  | flags | type of operation.
  | e | the engine to build.
  | data | bit 0 prevents any free cars from being added to the train.
  | ret[out] | the vehicle that has been built.

Returns:
  the cost of this operation or an error.

Definition at line 700 of file train_cmd.cpp.

References _cur_year, _current_company, _date, AddArticulatedParts(), Vehicle::build_year, RailVehicleInfo::capacity, Vehicle::cargo_cap, Vehicle::cargo_type, CheckConsistencyOfArticulatedVehicle(), CMD_ERROR, CmdBuildRailWagon(), Train::ConsistChanged(), Vehicle::cur_image, Vehicle::date_of_last_service, DC_AUTOREPLACE, DC_EXEC, DEFAULT_GROUP, DiagDirToDir(), Vehicle::direction, ENGINE_EXCLUSIVE_PREVIEW, Vehicle::engine_type, GroundVehicleCache::first_engine, Engine::flags, GroundVehicle< T, Type >::gcache, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Engine::GetDefaultCargoType(), Engine::GetLifeLengthInDays(), GetRailDepotDirection(), GetRailType(), Vehicle::group_id, HasBit(), HasPowerOnRail(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_ENGINE, Vehicle::last_station_visited, Vehicle::max_age, NormalizeTrainVehInDepot(), Vehicle::owner, RAILVEH_MULTIHEAD, RAILVEH_WAGON, Vehicle::random_bits, Engine::reliability, Vehicle::reliability, Engine::reliability_spd_dec, Vehicle::reliability_spd_dec, SetBit(), GroundVehicle< T, Type >::SetEngine(), GroundVehicle< T, Type >::SetFrontEngine(), Vehicle::spritenum, Vehicle::tile, TILE_SIZE, TileX(), TileY(), UpdateTrainGroupID(), VehicleRandomBits(), VehicleUpdatePosition(), Vehicle::vehstatus, VF_BUILT_AS_PROTOTYPE, VS_HIDDEN, VS_STOPPED, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CmdBuildVehicle().

CommandCost CmdBuildRoadVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | const Engine * | e,
|  | uint16 | data,
|  | Vehicle ** | ret |
| ) |  |  |

Build a road vehicle.

Parameters:

  | tile | tile of the depot where road vehicle is built.
  | flags | type of operation.
  | e | the engine to build.
  | data | unused.
  | ret[out] | the vehicle that has been built.

Returns:
  the cost of this operation or an error.

Definition at line 257 of file roadveh_cmd.cpp.

References _cur_year, _current_company, _date, _settings_game, AddArticulatedParts(), Vehicle::build_year, GroundVehicleCache::cached_veh_length, Vehicle::cargo_cap, Vehicle::cargo_type, GroundVehicle< T, Type >::CargoChanged(), CheckConsistencyOfArticulatedVehicle(), Vehicle::cur_image, Vehicle::date_of_last_service, DC_EXEC, DiagDirToDir(), Vehicle::direction, EF_ROAD_TRAM, ENGINE_EXCLUSIVE_PREVIEW, Vehicle::engine_type, GroundVehicleCache::first_engine, Engine::flags, GroundVehicle< T, Type >::gcache, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Engine::GetDefaultCargoType(), Engine::GetLifeLengthInDays(), GetRoadDepotDirection(), HasBit(), HasTileRoadType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_ENGINE, Vehicle::InvalidateNewGRFCache(), Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::last_station_visited, Vehicle::max_age, EngineInfo::misc_flags, SpecializedVehicle< T, Type >::Next(), Vehicle::owner, Vehicle::random_bits, Engine::reliability, Vehicle::reliability, Engine::reliability_spd_dec, Vehicle::reliability_spd_dec, return_cmd_error, ROADTYPE_TRAM, RoadTypeToRoadTypes(), VehicleSettings::roadveh_acceleration_model, RoadVehUpdateCache(), SetBit(), GroundVehicle< T, Type >::SetFrontEngine(), Vehicle::spritenum, RoadVehicle::state, Vehicle::tile, TILE_SIZE, TileX(), TileY(), GameSettings::vehicle, VEHICLE_LENGTH, VehicleRandomBits(), VehicleUpdatePosition(), Vehicle::vehstatus, VF_BUILT_AS_PROTOTYPE, VS_HIDDEN, VS_STOPPED, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CmdBuildVehicle().

CommandCost CmdBuildShip | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | const Engine * | e,
|  | uint16 | data,
|  | Vehicle ** | ret |
| ) |  |  |

Build a ship.

Parameters:

  | tile | tile of the depot where ship is built.
  | flags | type of operation.
  | e | the engine to build.
  | data | unused.
  | ret[out] | the vehicle that has been built.

Returns:
  the cost of this operation or an error.

Definition at line 658 of file ship_cmd.cpp.

References _cur_year, _current_company, _date, Vehicle::build_year, Vehicle::cargo_cap, Vehicle::cargo_type, Vehicle::cur_image, Vehicle::date_of_last_service, DC_EXEC, Engine::DetermineCapacity(), Vehicle::direction, ENGINE_EXCLUSIVE_PREVIEW, Vehicle::engine_type, Engine::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Engine::GetDefaultCargoType(), Engine::GetLifeLengthInDays(), GetShipDepotNorthTile(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::last_station_visited, Vehicle::max_age, Vehicle::owner, Vehicle::random_bits, Engine::reliability, Vehicle::reliability, Engine::reliability_spd_dec, Vehicle::reliability_spd_dec, SetBit(), Vehicle::spritenum, Ship::state, Vehicle::tile, TILE_SIZE, TileX(), TileY(), Ship::UpdateCache(), Ship::UpdateDeltaXY(), VehicleRandomBits(), VehicleUpdatePosition(), Vehicle::vehstatus, VF_BUILT_AS_PROTOTYPE, VS_HIDDEN, VS_STOPPED, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CmdBuildVehicle().

CommandCost CmdBuildVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Build a vehicle.

Parameters:

  | tile | tile of depot where the vehicle is built
  | flags | for command
  | p1 | various bitstuffed data bits 0-15: vehicle type being built. bits 16-31: vehicle type specific bits passed on to the vehicle build functions.
  | p2 | User
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 83 of file vehicle_cmd.cpp.

References _current_company, AIR_CTOL, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), CMD_ERROR, CmdBuildAircraft(), CmdBuildRailVehicle(), CmdBuildRoadVehicle(), CmdBuildShip(), CountArticulatedParts(), GroupStatistics::CountEngine(), GroupStatistics::CountVehicle(), DC_AUTOREPLACE, Vehicle::engine_type, EXPENSES_NEW_VEHICLES, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetCost(), Engine::GetDefaultCargoType(), GetFreeUnitNumber(), GetTileType(), GetWindowClassForVehicleType(), Vehicle::group_id, InvalidateAutoreplaceWindow(), InvalidateWindowClassesData(), InvalidateWindowData(), IsDepotTile(), IsEngineBuildable(), IsLocalCompany(), Vehicle::IsPrimaryVehicle(), IsTileOwner(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_WATER, RAILVEH_MULTIHEAD, OrderBackup::Restore(), return_cmd_error, SetWindowDirty(), AircraftVehicleInfo::subtype, Vehicle::tile, Vehicle::unitnumber, GroupStatistics::UpdateAutoreplace(), Vehicle::value, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, WC_COMPANY, and WC_VEHICLE_DEPOT.

CommandCost CmdChangeServiceInt | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Change the service interval of a vehicle.

Parameters:

  | tile | unused
  | flags | type of operation
  | p1 | vehicle ID that is being service-interval-changed
  | p2 | bitmask p2 = (bit 0-15) - new service interval p2 = (bit 16) - service interval is custom flag p2 = (bit 17) - service interval is percentage flag
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 1043 of file vehicle_cmd.cpp.

References CheckOwnership(), CMD_ERROR, CompanyServiceInterval(), DC_EXEC, CommandCost::Failed(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), GetServiceIntervalClamped(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsPrimaryVehicle(), Vehicle::owner, VehicleDefaultSettings::servint_ispercent, Company::settings, SetWindowDirty(), BaseVehicle::type, CompanySettings::vehicle, and WC_VEHICLE_DETAILS.

CommandCost CmdCloneVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Clone a vehicle.

If it is a train, it will clone all the cars too

Parameters:

  | tile | tile of the depot where the cloned vehicle is build
  | flags | type of operation
  | p1 | the original vehicle's index
  | p2 | 1 = shared orders, else copied orders
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 761 of file vehicle_cmd.cpp.

References CommandCost::AddCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), Engine::CanCarryCargo(), Vehicle::cargo_subtype, Vehicle::cargo_type, CheckCompanyHasMoney(), CheckOwnership(), CloneVehicleName(), CMD_ADD_VEHICLE_GROUP, CMD_CLONE_ORDER, CMD_ERROR, CMD_MOVE_RAIL_VEHICLE, Train::crash_anim_pos, CT_INVALID, DC_AUTOREPLACE, DC_EXEC, DoCommand(), Vehicle::engine_type, EXPENSES_NEW_VEHICLES, CommandCost::Failed(), SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Get(), GetBestFittingSubType(), Engine::GetDefaultCargoType(), Vehicle::GetEngine(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Vehicle::GetNextArticulatedPart(), Vehicle::GetNextVehicle(), GetRefitCost(), Vehicle::group_id, Vehicle::HasArticulatedPart(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsFrontEngine(), Vehicle::IsGroundVehicle(), Vehicle::IsPrimaryVehicle(), GroundVehicle< T, Type >::IsRearDualheaded(), BaseConsist::name, Vehicle::Next(), Vehicle::owner, return_cmd_error, BaseConsist::service_interval, SetBit(), CommandCost::Succeeded(), Vehicle::tile, BaseVehicle::type, VEH_TRAIN, and VRF_REVERSE_DIRECTION.

CommandCost CmdDepotMassAutoReplace | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Autoreplace all vehicles in the depot.

Parameters:

  | tile | Tile of the depot where the vehicles are
  | flags | type of operation
  | p1 | Type of vehicle
  | p2 | unused
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 661 of file vehicle_cmd.cpp.

References _current_company, CommandCost::AddCost(), BuildDepotVehicleList(), CMD_AUTOREPLACE_VEHICLE, CMD_ERROR, DoCommand(), EXPENSES_NEW_VEHICLES, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsChainInDepot(), IsCompanyBuildableVehicleType(), IsDepotTile(), IsTileOwner(), SmallVector< T, S >::Length(), and CommandCost::Succeeded().

CommandCost CmdDepotSellAllVehicles | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Sells all vehicles in a depot.

Parameters:

  | tile | Tile of the depot where the depot is
  | flags | type of operation
  | p1 | Vehicle type
  | p2 | unused
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 623 of file vehicle_cmd.cpp.

References CommandCost::AddCost(), BuildDepotVehicleList(), CMD_ERROR, DoCommand(), EXPENSES_NEW_VEHICLES, IsCompanyBuildableVehicleType(), SmallVector< T, S >::Length(), and CommandCost::Succeeded().

CommandCost CmdMassStartStopVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Starts or stops a lot of vehicles.

Parameters:

  | tile | Tile of the depot where the vehicles are started/stopped (only used for depots)
  | flags | type of operation
  | p1 | bitmask bit 0 set = start vehicles, unset = stop vehicles bit 1 if set, then it's a vehicle list window, not a depot and Tile is ignored in this case
  | p2 | packed VehicleListIdentifier
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 583 of file vehicle_cmd.cpp.

References BuildDepotVehicleList(), CMD_ERROR, CMD_START_STOP_VEHICLE, DoCommand(), GenerateVehicleSortList(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsChainInDepot(), IsCompanyBuildableVehicleType(), SmallVector< T, S >::Length(), VehicleListIdentifier::Unpack(), Vehicle::vehstatus, VS_STOPPED, and VehicleListIdentifier::vtype.

CommandCost CmdRefitVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Refits a vehicle to the specified cargo type.

Parameters:

  | tile | unused
  | flags | type of operation
  | p1 | vehicle ID to refit
  | p2 | various bitstuffed elements p2 = (bit 0-4) - New cargo type to refit to. p2 = (bit 6) - Automatic refitting. p2 = (bit 7) - Refit only this vehicle. Used only for cloning vehicles. p2 = (bit 8-15) - New cargo subtype to refit to. p2 = (bit 16-23) - Number of vehicles to refit (not counting articulated parts). Zero means all vehicles. Only used if "refit only this vehicle" is false.
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 422 of file vehicle_cmd.cpp.

References _settings_game, GroundVehicle< T, Type >::CargoChanged(), CheckOwnership(), CMD_ERROR, Vehicle::colourmap, Train::ConsistChanged(), Vehicle::current_order, DC_EXEC, CommandCost::Failed(), Vehicle::First(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedVehicle< Ship, VEH_SHIP >::From(), SpecializedVehicle< RoadVehicle, Type >::From(), SpecializedVehicle< Train, Type >::From(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), GetWindowClassForVehicleType(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::InvalidateNewGRFCacheOfChain(), InvalidateWindowClassesData(), InvalidateWindowData(), IsCompanyBuildableVehicleType(), Vehicle::IsStoppedInDepot(), Order::IsType(), NUM_CARGO, Vehicle::owner, RefitVehicle(), return_cmd_error, VehicleSettings::roadveh_acceleration_model, RoadVehUpdateCache(), SetWindowDirty(), Vehicle::tile, BaseVehicle::type, UpdateAircraftCache(), Ship::UpdateCache(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, GameSettings::vehicle, Vehicle::vehstatus, VS_CRASHED, WC_VEHICLE_DEPOT, and WC_VEHICLE_DETAILS.

CommandCost CmdRenameVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Give a custom name to your vehicle.

Parameters:

  | tile | unused
  | flags | type of operation
  | p1 | vehicle ID to name
  | p2 | unused
  | text | the new name or an empty string when resetting to the default

Returns:
  the cost of this operation or an error

Definition at line 1005 of file vehicle_cmd.cpp.

References CheckOwnership(), CMD_ERROR, DC_AUTOREPLACE, DC_EXEC, CommandCost::Failed(), free(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), GetWindowClassForVehicleType(), InvalidateWindowClassesData(), Vehicle::IsPrimaryVehicle(), IsUniqueVehicleName(), MarkWholeScreenDirty(), MAX_LENGTH_VEHICLE_NAME_CHARS, BaseConsist::name, Vehicle::owner, return_cmd_error, StrEmpty(), BaseVehicle::type, and Utf8StringLength().

CommandCost CmdSellRailWagon | ( | DoCommandFlag | flags,
|  | Vehicle * | t,
|  | uint16 | data,
|  | uint32 | user |
| ) |  |  |

Sell a (single) train wagon/engine.

Parameters:

  | flags | type of operation
  | t | the train wagon to sell
  | data | the selling mode data = 0: only sell the single dragged wagon/engine (and any belonging rear-engines) data = 1: sell the vehicle and all vehicles following it in the chain if the wagon is dragged, don't delete the possibly belonging rear-engine to some front
  | user | the user for the order backup.

Returns:
  the cost of this operation or an error

Definition at line 1323 of file train_cmd.cpp.

References CommandCost::AddCost(), Vehicle::AddToShared(), ArrangeTrains(), OrderBackup::Backup(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_orderlist_pool >::CanAllocateItem(), Vehicle::CopyVehicleConfigAndStatistics(), GroupStatistics::CountVehicle(), DC_AUTOREPLACE, DC_EXEC, DeleteVehicleOrders(), EXPENSES_NEW_VEHICLES, CommandCost::Failed(), SpecializedVehicle< T, Type >::First(), Vehicle::first, SpecializedVehicle< Train, Type >::From(), SpecializedVehicle< T, Type >::GetFirstEnginePart(), HasBit(), InvalidateWindowClassesData(), InvalidateWindowData(), GroundVehicle< T, Type >::IsEngine(), Vehicle::IsFrontEngine(), IsLocalCompany(), Train::IsPrimaryVehicle(), GroundVehicle< T, Type >::IsRearDualheaded(), Vehicle::list, MAKE_ORDER_BACKUP_FLAG, MakeTrainBackup(), Vehicle::Next(), NormaliseSubtypes(), NormaliseTrainHead(), Vehicle::orders, RestoreTrainBackup(), return_cmd_error, ShowVehicleViewWindow(), Vehicle::tile, ValidateTrains(), Vehicle::value, WC_TRAINS_LIST, and WC_VEHICLE_DEPOT.

Referenced by CmdSellVehicle().

CommandCost CmdSellVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Sell a vehicle.

Parameters:

  | tile | unused.
  | flags | for command.
  | p1 | various bitstuffed data. bits 0-19: vehicle ID being sold. bits 20-30: vehicle type specific bits passed on to the vehicle build functions. bit 31: make a backup of the vehicle's order (if an engine).
  | p2 | User.
  | text | unused.

Returns:
  the cost of this operation or an error.

Definition at line 170 of file vehicle_cmd.cpp.

References OrderBackup::Backup(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_order_pool >::CanAllocateItem(), CheckOwnership(), CMD_ERROR, CmdSellRailWagon(), DC_EXEC, EXPENSES_NEW_VEHICLES, CommandCost::Failed(), Vehicle::First(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), OrderList::GetNumOrders(), Vehicle::IsPrimaryVehicle(), OrderList::IsShared(), Vehicle::IsStoppedInDepot(), Vehicle::list, MAKE_ORDER_BACKUP_FLAG, Vehicle::orders, Vehicle::owner, return_cmd_error, BaseVehicle::type, Vehicle::value, VEH_TRAIN, Vehicle::vehstatus, and VS_CRASHED.

CommandCost CmdSendVehicleToDepot | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Send a vehicle to the depot.

Parameters:

  | tile | unused
  | flags | for command type
  | p1 | bitmask p1 0-20: bitvehicle ID to send to the depot p1 bits 25-8 - DEPOT_ flags (see vehicle_type.h)
  | p2 | packed VehicleListIdentifier.
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 980 of file vehicle_cmd.cpp.

References CMD_ERROR, DEPOT_MASS_SEND, DEPOT_SERVICE, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Vehicle::IsPrimaryVehicle(), SendAllVehiclesToDepot(), Vehicle::SendToDepot(), and VehicleListIdentifier::Unpack().

CommandCost CmdStartStopVehicle | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Start/Stop a vehicle.

Parameters:

  | tile | unused
  | flags | type of operation
  | p1 | vehicle to start/stop, don't forget to change CcStartStopVehicle if you modify this!
  | p2 | bit 0: Shall the start/stop newgrf callback be evaluated (only valid with DC_AUTOREPLACE for network safety)
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 501 of file vehicle_cmd.cpp.

References GroundVehicleCache::cached_power, CALLBACK_FAILED, CBID_VEHICLE_START_STOP_CHECK, CheckOwnership(), CMD_ERROR, Vehicle::cur_speed, DC_AUTOREPLACE, DC_EXEC, DeleteVehicleNews(), Vehicle::engine_type, error(), CommandCost::Failed(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedVehicle< Train, Type >::From(), GB(), GroundVehicle< T, Type >::gcache, Vehicle::GetGRF(), Vehicle::GetGRFID(), GetGRFStringID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), GetVehicleCallback(), GetWindowClassForVehicleType(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsPrimaryVehicle(), Vehicle::IsStoppedInDepot(), Vehicle::MarkDirty(), Vehicle::owner, return_cmd_error, SetBit(), SetWindowClassesDirty(), SetWindowDirty(), SetWindowWidgetDirty(), STARTTAKEOFF, Aircraft::state, TERM7, Vehicle::tile, BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, Vehicle::vehstatus, VS_CRASHED, VS_STOPPED, WC_VEHICLE_DEPOT, WC_VEHICLE_VIEW, and WID_VV_START_STOP.

static CommandCost GetRefitCost | ( | const Vehicle * | v,
|  | EngineID | engine_type,
|  | CargoID | new_cid,
|  | byte | new_subtype,
|  | bool * | auto_refit_allowed |
| ) |  |  | `[static]`

Learn the price of refitting a certain engine.

Parameters:

  | v | The vehicle we are refitting, can be NULL.
  | engine_type | Which engine to refit
  | new_cid | Cargo type we are refitting to.
  | new_subtype | New cargo subtype.
  `[out]` | auto_refit_allowed | The refit is allowed as an auto-refit.

Returns:
  Price for refitting

Definition at line 249 of file vehicle_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetGRF(), GetPrice(), GetRefitCostFactor(), Engine::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by CmdCloneVehicle(), and RefitVehicle().

static int GetRefitCostFactor | ( | const Vehicle * | v,
|  | EngineID | engine_type,
|  | CargoID | new_cid,
|  | byte | new_subtype,
|  | bool * | auto_refit_allowed |
| ) |  |  | `[static]`

Helper to run the refit cost callback.

Parameters:

  | v | The vehicle we are refitting, can be NULL.
  | engine_type | Which engine to refit
  | new_cid | Cargo type we are refitting to.
  | new_subtype | New cargo subtype.
  `[out]` | auto_refit_allowed | The refit is allowed as an auto-refit.

Returns:
  Price for refitting

Definition at line 217 of file vehicle_cmd.cpp.

References CALLBACK_FAILED, GRFFile::cargo_map, Vehicle::cargo_type, CBID_VEHICLE_REFIT_COST, CargoSpec::classes, GB(), CargoSpec::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetGRF(), GetVehicleCallback(), and HasBit().

Referenced by GetRefitCost().

static bool IsUniqueVehicleName | ( | const char * | name | ) | `[static]`

Test if a name is unique among vehicle names.

Parameters:

  | name | Name to test.

Returns:
  True ifffffff the name is unique.

Definition at line 691 of file vehicle_cmd.cpp.

References FOR_ALL_VEHICLES, and BaseConsist::name.

Referenced by CloneVehicleName(), and CmdRenameVehicle().

static CommandCost RefitVehicle | ( | Vehicle * | v,
|  | bool | only_this,
|  | uint8 | num_vehicles,
|  | CargoID | new_cid,
|  | byte | new_subtype,
|  | DoCommandFlag | flags,
|  | bool | auto_refit |
| ) |  |  | `[static]`

Refits a vehicle (chain).

This is the vehicle-type independent part of the CmdRefitXXX functions.

Parameters:

  | v | The vehicle to refit.
  | only_this | Whether to only refit this vehicle, or to check the rest of them.
  | num_vehicles | Number of vehicles to refit (not counting articulated parts). Zero means the whole chain.
  | new_cid | Cargotype to refit to
  | new_subtype | Cargo subtype to refit to
  | flags | Command flags
  | auto_refit | Refitting is done as automatic refitting outside a depot.

Returns:
  Refit cost.

Definition at line 305 of file vehicle_cmd.cpp.

References _returned_mail_refit_capacity, _returned_refit_capacity, SmallVector< T, S >::Append(), SmallVector< T, S >::Begin(), Engine::CanCarryCargo(), RefitResult::capacity, Vehicle::cargo, Vehicle::cargo_cap, Vehicle::cargo_subtype, Vehicle::cargo_type, SmallVector< T, S >::Clear(), SmallVector< T, S >::Contains(), DC_EXEC, Engine::DetermineCapacity(), EF_AUTO_REFIT, SmallVector< T, S >::End(), Vehicle::engine_type, Vehicle::First(), Vehicle::GetEngine(), Vehicle::GetExpenseType(), GetRefitCost(), GetVehicleSet(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::InvalidateNewGRFCacheOfChain(), RefitResult::mail_capacity, EngineInfo::misc_flags, Vehicle::Next(), CargoList< Tinst >::Truncate(), BaseVehicle::type, RefitResult::v, VEH_AIRCRAFT, and VEH_TRAIN.

Referenced by CmdRefitVehicle().

static CommandCost SendAllVehiclesToDepot | ( | DoCommandFlag | flags,
|  | bool | service,
|  | const VehicleListIdentifier & | vli |
| ) |  |  | `[static]`

Send all vehicles of type to depots.

Parameters:

  | flags | the flags used for DoCommand()
  | service | should the vehicles only get service in the depots
  | vli | identifier of the vehicle list

Returns:
  0 for success and CMD_ERROR if no vehicle is able to go to depot

Definition at line 943 of file vehicle_cmd.cpp.

References CMD_ERROR, DC_EXEC, DEPOT_DONT_CANCEL, DEPOT_SERVICE, DoCommand(), GenerateVehicleSortList(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, SmallVector< T, S >::Length(), CommandCost::Succeeded(), Vehicle::tile, and VehicleListIdentifier::vtype.

Referenced by CmdSendVehicleToDepot().

## Variable Documentation

const uint32 _send_to_depot_proc_table[]

Initial value:

     {
      CMD_SEND_VEHICLE_TO_DEPOT | CMD_MSG(STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT),
      CMD_SEND_VEHICLE_TO_DEPOT | CMD_MSG(STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT),
      CMD_SEND_VEHICLE_TO_DEPOT | CMD_MSG(STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT),
      CMD_SEND_VEHICLE_TO_DEPOT | CMD_MSG(STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR),
    }

Definition at line 59 of file vehicle_cmd.cpp.

const uint32 _veh_build_proc_table[]

Initial value:

     {
      CMD_BUILD_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN),
      CMD_BUILD_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_ROAD_VEHICLE),
      CMD_BUILD_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_SHIP),
      CMD_BUILD_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_AIRCRAFT),
    }

Definition at line 38 of file vehicle_cmd.cpp.

const uint32 _veh_refit_proc_table[]

Initial value:

     {
      CMD_REFIT_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_REFIT_TRAIN),
      CMD_REFIT_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE),
      CMD_REFIT_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_REFIT_SHIP),
      CMD_REFIT_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_REFIT_AIRCRAFT),
    }

Definition at line 52 of file vehicle_cmd.cpp.

const uint32 _veh_sell_proc_table[]

Initial value:

     {
      CMD_SELL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_SELL_TRAIN),
      CMD_SELL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_SELL_ROAD_VEHICLE),
      CMD_SELL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_SELL_SHIP),
      CMD_SELL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_SELL_AIRCRAFT),
    }

Definition at line 45 of file vehicle_cmd.cpp.