|
OpenTTD Source
14.0-beta1
|
#include "stdafx.h"#include "roadveh.h"#include "news_func.h"#include "airport.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 "core/random_func.hpp"#include "vehicle_cmd.h"#include "aircraft_cmd.h"#include "autoreplace_cmd.h"#include "group_cmd.h"#include "order_cmd.h"#include "roadveh_cmd.h"#include "train_cmd.h"#include "ship_cmd.h"#include <sstream>#include <iomanip>#include "table/strings.h"#include "safeguards.h"Go to the source code of this file.
Data Structures | |
| struct | RefitResult |
| Helper structure for RefitVehicle() More... | |
Functions | |
| std::tuple< CommandCost, VehicleID, uint, uint16_t, CargoArray > | CmdBuildVehicle (DoCommandFlag flags, TileIndex tile, EngineID eid, bool use_free_vehicles, CargoID cargo, ClientID client_id) |
| Build a vehicle. More... | |
| CommandCost | CmdSellVehicle (DoCommandFlag flags, VehicleID v_id, bool sell_chain, bool backup_order, ClientID client_id) |
| Sell a vehicle. More... | |
| 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. More... | |
| 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. More... | |
| static std::tuple< CommandCost, uint, uint16_t, CargoArray > | RefitVehicle (Vehicle *v, bool only_this, uint8_t num_vehicles, CargoID new_cid, byte new_subtype, DoCommandFlag flags, bool auto_refit) |
| Refits a vehicle (chain). More... | |
| std::tuple< CommandCost, uint, uint16_t, CargoArray > | CmdRefitVehicle (DoCommandFlag flags, VehicleID veh_id, CargoID new_cid, byte new_subtype, bool auto_refit, bool only_this, uint8_t num_vehicles) |
| Refits a vehicle to the specified cargo type. More... | |
| CommandCost | CmdStartStopVehicle (DoCommandFlag flags, VehicleID veh_id, bool evaluate_startstop_cb) |
| Start/Stop a vehicle. More... | |
| CommandCost | CmdMassStartStopVehicle (DoCommandFlag flags, TileIndex tile, bool do_start, bool vehicle_list_window, const VehicleListIdentifier &vli) |
| Starts or stops a lot of vehicles. More... | |
| CommandCost | CmdDepotSellAllVehicles (DoCommandFlag flags, TileIndex tile, VehicleType vehicle_type) |
| Sells all vehicles in a depot. More... | |
| CommandCost | CmdDepotMassAutoReplace (DoCommandFlag flags, TileIndex tile, VehicleType vehicle_type) |
| Autoreplace all vehicles in the depot. More... | |
| bool | IsUniqueVehicleName (const std::string &name) |
| Test if a name is unique among vehicle names. More... | |
| static void | CloneVehicleName (const Vehicle *src, Vehicle *dst) |
| Clone the custom name of a vehicle, adding or incrementing a number. More... | |
| std::tuple< CommandCost, VehicleID > | CmdCloneVehicle (DoCommandFlag flags, TileIndex tile, VehicleID veh_id, bool share_orders) |
| Clone a vehicle. More... | |
| static CommandCost | SendAllVehiclesToDepot (DoCommandFlag flags, bool service, const VehicleListIdentifier &vli) |
| Send all vehicles of type to depots. More... | |
| CommandCost | CmdSendVehicleToDepot (DoCommandFlag flags, VehicleID veh_id, DepotCommand depot_cmd, const VehicleListIdentifier &vli) |
| Send a vehicle to the depot. More... | |
| CommandCost | CmdRenameVehicle (DoCommandFlag flags, VehicleID veh_id, const std::string &text) |
| Give a custom name to your vehicle. More... | |
| CommandCost | CmdChangeServiceInt (DoCommandFlag flags, VehicleID veh_id, uint16_t serv_int, bool is_custom, bool is_percent) |
| Change the service interval of a vehicle. More... | |
Variables | |
| const StringID | _veh_build_msg_table [] |
| const StringID | _veh_sell_msg_table [] |
| const StringID | _veh_refit_msg_table [] |
| const StringID | _send_to_depot_msg_table [] |
Commands for vehicles.
Definition in file vehicle_cmd.cpp.
Clone the custom name of a vehicle, adding or incrementing a number.
| src | Source vehicle, with a custom name. |
| dst | Destination vehicle. |
Definition at line 767 of file vehicle_cmd.cpp.
References BaseConsist::name.
| std::tuple<CommandCost, VehicleID, uint, uint16_t, CargoArray> CmdBuildVehicle | ( | DoCommandFlag | flags, |
| TileIndex | tile, | ||
| EngineID | eid, | ||
| bool | use_free_vehicles, | ||
| CargoID | cargo, | ||
| ClientID | client_id | ||
| ) |
Build a vehicle.
| flags | for command |
| tile | tile of depot where the vehicle is built |
| eid | vehicle type being built. |
| use_free_vehicles | use free vehicles when building the vehicle. |
| cargo | refit cargo type. |
| client_id | User |
Definition at line 87 of file vehicle_cmd.cpp.
References _current_company, AIR_CTOL, CMD_ERROR, CountArticulatedParts(), EXPENSES_NEW_VEHICLES, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetCost(), Engine::GetDefaultCargoType(), GetDepotVehicleType(), INVALID_VEHICLE, IsDepotTile(), IsEngineBuildable(), IsTileOwner(), IsValidCargoID(), NUM_CARGO, RAILVEH_MULTIHEAD, AircraftVehicleInfo::subtype, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
| CommandCost CmdChangeServiceInt | ( | DoCommandFlag | flags, |
| VehicleID | veh_id, | ||
| uint16_t | serv_int, | ||
| bool | is_custom, | ||
| bool | is_percent | ||
| ) |
Change the service interval of a vehicle.
| flags | type of operation |
| veh_id | vehicle ID that is being service-interval-changed |
| serv_int | new service interval |
| is_custom | service interval is custom flag |
| is_percent | service interval is percentage flag |
Definition at line 1107 of file vehicle_cmd.cpp.
| std::tuple<CommandCost, VehicleID> CmdCloneVehicle | ( | DoCommandFlag | flags, |
| TileIndex | tile, | ||
| VehicleID | veh_id, | ||
| bool | share_orders | ||
| ) |
Clone a vehicle.
If it is a train, it will clone all the cars too
| flags | type of operation |
| tile | tile of the depot where the cloned vehicle is build |
| veh_id | the original vehicle's index |
| share_orders | shared orders, else copied orders |
Definition at line 826 of file vehicle_cmd.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), CheckOwnership(), CMD_ERROR, Train::crash_anim_pos, DC_EXEC, EXPENSES_NEW_VEHICLES, CommandCost::Failed(), SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), INVALID_VEHICLE, Vehicle::IsFrontEngine(), Vehicle::IsPrimaryVehicle(), Vehicle::Next(), Vehicle::owner, BaseVehicle::type, and VEH_TRAIN.
| CommandCost CmdDepotMassAutoReplace | ( | DoCommandFlag | flags, |
| TileIndex | tile, | ||
| VehicleType | vehicle_type | ||
| ) |
Autoreplace all vehicles in the depot.
| flags | type of operation |
| tile | Tile of the depot where the vehicles are |
| vehicle_type | Type of vehicle |
Definition at line 724 of file vehicle_cmd.cpp.
References _current_company, CommandCost::AddCost(), BuildDepotVehicleList(), CMD_ERROR, EXPENSES_NEW_VEHICLES, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsChainInDepot(), IsCompanyBuildableVehicleType(), IsDepotTile(), IsTileOwner(), and CommandCost::Succeeded().
| CommandCost CmdDepotSellAllVehicles | ( | DoCommandFlag | flags, |
| TileIndex | tile, | ||
| VehicleType | vehicle_type | ||
| ) |
Sells all vehicles in a depot.
Definition at line 690 of file vehicle_cmd.cpp.
References _current_company, CommandCost::AddCost(), BuildDepotVehicleList(), CMD_ERROR, EXPENSES_NEW_VEHICLES, INVALID_CLIENT_ID, IsCompanyBuildableVehicleType(), IsDepotTile(), IsTileOwner(), and CommandCost::Succeeded().
| CommandCost CmdMassStartStopVehicle | ( | DoCommandFlag | flags, |
| TileIndex | tile, | ||
| bool | do_start, | ||
| bool | vehicle_list_window, | ||
| const VehicleListIdentifier & | vli | ||
| ) |
Starts or stops a lot of vehicles.
| flags | type of operation |
| tile | Tile of the depot where the vehicles are started/stopped (only used for depots) |
| do_start | set = start vehicles, unset = stop vehicles |
| vehicle_list_window | if set, then it's a vehicle list window, not a depot and Tile is ignored in this case |
| vli | VehicleListIdentifier |
Definition at line 654 of file vehicle_cmd.cpp.
References _current_company, BuildDepotVehicleList(), CMD_ERROR, do_start, GenerateVehicleSortList(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsChainInDepot(), IsCompanyBuildableVehicleType(), IsDepotTile(), IsTileOwner(), Vehicle::vehstatus, VS_STOPPED, and VehicleListIdentifier::vtype.
| std::tuple<CommandCost, uint, uint16_t, CargoArray> CmdRefitVehicle | ( | DoCommandFlag | flags, |
| VehicleID | veh_id, | ||
| CargoID | new_cid, | ||
| byte | new_subtype, | ||
| bool | auto_refit, | ||
| bool | only_this, | ||
| uint8_t | num_vehicles | ||
| ) |
Refits a vehicle to the specified cargo type.
| flags | type of operation |
| veh_id | vehicle ID to refit |
| new_cid | New cargo type to refit to. |
| new_subtype | New cargo subtype to refit to. 0xFF means to try keeping the same subtype according to GetBestFittingSubType(). |
| auto_refit | Automatic refitting. |
| only_this | Refit only this vehicle. Used only for cloning vehicles. |
| num_vehicles | Number of vehicles to refit (not counting articulated parts). Zero means all vehicles. Only used if "refit only this vehicle" is false. |
Definition at line 486 of file vehicle_cmd.cpp.
References CheckOwnership(), CMD_ERROR, Vehicle::current_order, DC_QUERY_COST, CommandCost::Failed(), Vehicle::First(), SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), IsCompanyBuildableVehicleType(), GroundVehicle< T, Type >::IsFreeWagon(), Order::IsType(), Vehicle::owner, BaseVehicle::type, VEH_AIRCRAFT, VEH_SHIP, and VEH_TRAIN.
| CommandCost CmdRenameVehicle | ( | DoCommandFlag | flags, |
| VehicleID | veh_id, | ||
| const std::string & | text | ||
| ) |
Give a custom name to your vehicle.
| flags | type of operation |
| veh_id | vehicle ID to name |
| text | the new name or an empty string when resetting to the default |
Definition at line 1069 of file vehicle_cmd.cpp.
References CheckOwnership(), CMD_ERROR, DC_AUTOREPLACE, DC_EXEC, CommandCost::Failed(), 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, BaseVehicle::type, and Utf8StringLength().
| CommandCost CmdSellVehicle | ( | DoCommandFlag | flags, |
| VehicleID | v_id, | ||
| bool | sell_chain, | ||
| bool | backup_order, | ||
| ClientID | client_id | ||
| ) |
Sell a vehicle.
| flags | for command. |
| v_id | vehicle ID being sold. |
| sell_chain | sell the vehicle and all vehicles following it in the chain. |
| backup_order | make a backup of the vehicle's order (if an engine). |
| client_id | User. |
Definition at line 220 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(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), OrderList::GetNumOrders(), Vehicle::IsPrimaryVehicle(), OrderList::IsShared(), Vehicle::IsStoppedInDepot(), Vehicle::orders, Vehicle::owner, return_cmd_error, BaseVehicle::type, Vehicle::value, VEH_TRAIN, Vehicle::vehstatus, and VS_CRASHED.
| CommandCost CmdSendVehicleToDepot | ( | DoCommandFlag | flags, |
| VehicleID | veh_id, | ||
| DepotCommand | depot_cmd, | ||
| const VehicleListIdentifier & | vli | ||
| ) |
Send a vehicle to the depot.
| flags | for command type |
| veh_id | vehicle ID to send to the depot |
| depot_cmd | DEPOT_ flags (see vehicle_type.h) |
| vli | VehicleListIdentifier. |
Definition at line 1047 of file vehicle_cmd.cpp.
References CMD_ERROR, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Vehicle::IsPrimaryVehicle(), MassSend, None, SendAllVehiclesToDepot(), Vehicle::SendToDepot(), and Service.
| CommandCost CmdStartStopVehicle | ( | DoCommandFlag | flags, |
| VehicleID | veh_id, | ||
| bool | evaluate_startstop_cb | ||
| ) |
Start/Stop a vehicle.
| flags | type of operation |
| veh_id | vehicle to start/stop, don't forget to change CcStartStopVehicle if you modify this! |
| evaluate_startstop_cb | Shall the start/stop newgrf callback be evaluated (only valid with DC_AUTOREPLACE for network safety) |
Definition at line 568 of file vehicle_cmd.cpp.
References GroundVehicleCache::cached_power, CheckOwnership(), CMD_ERROR, DC_AUTOREPLACE, CommandCost::Failed(), Aircraft::flags, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedVehicle< Train, Type >::From(), GroundVehicle< T, Type >::gcache, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), HasBit(), Vehicle::IsPrimaryVehicle(), Vehicle::owner, return_cmd_error, STARTTAKEOFF, Aircraft::state, TERM7, BaseVehicle::type, VAF_HELI_DIRECT_DESCENT, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, Vehicle::vehstatus, VS_CRASHED, and VS_STOPPED.
|
static |
Learn the price of refitting a certain engine.
| v | The vehicle we are refitting, can be nullptr. | |
| 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. |
Definition at line 299 of file vehicle_cmd.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), GetRefitCostFactor(), Engine::type, and VEH_SHIP.
|
static |
Helper to run the refit cost callback.
| v | The vehicle we are refitting, can be nullptr. | |
| 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. |
Definition at line 267 of file vehicle_cmd.cpp.
References GRFFile::cargo_map, CargoSpec::classes, CargoSpec::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), and Engine::GetGRF().
Referenced by GetRefitCost().
| bool IsUniqueVehicleName | ( | const std::string & | name | ) |
Test if a name is unique among vehicle names.
| name | Name to test. |
Definition at line 753 of file vehicle_cmd.cpp.
Referenced by CmdRenameVehicle().
|
static |
Refits a vehicle (chain).
This is the vehicle-type independent part of the CmdRefitXXX functions.
| 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. 0xFF means to try keeping the same subtype according to GetBestFittingSubType(). |
| flags | Command flags |
| auto_refit | Refitting is done as automatic refitting outside a depot. |
Definition at line 356 of file vehicle_cmd.cpp.
References Engine::CanCarryCargo(), Vehicle::cargo_subtype, Vehicle::cargo_type, Engine::DetermineCapacity(), EF_AUTO_REFIT, Vehicle::First(), GetBestFittingSubType(), Vehicle::GetEngine(), Vehicle::GetExpenseType(), GetVehicleSet(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::IsArticulatedPart(), EngineInfo::misc_flags, Vehicle::Next(), BaseVehicle::type, and VEH_TRAIN.
|
static |
Send all vehicles of type to depots.
| flags | the flags used for DoCommand() |
| service | should the vehicles only get service in the depots |
| vli | identifier of the vehicle list |
Definition at line 1013 of file vehicle_cmd.cpp.
References CMD_ERROR, DC_EXEC, DontCancel, GenerateVehicleSortList(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, None, Service, and CommandCost::Succeeded().
Referenced by CmdSendVehicleToDepot().
| const StringID _send_to_depot_msg_table[] |
Definition at line 69 of file vehicle_cmd.cpp.
| const StringID _veh_build_msg_table[] |
Definition at line 48 of file vehicle_cmd.cpp.
| const StringID _veh_refit_msg_table[] |
Definition at line 62 of file vehicle_cmd.cpp.
| const StringID _veh_sell_msg_table[] |
Definition at line 55 of file vehicle_cmd.cpp.