2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 /** @file vehicle_cmd.h Command definitions for vehicles. */
13 #include "command_type.h"
14 #include "engine_type.h"
15 #include "vehicle_type.h"
16 #include "vehiclelist.h"
17 #include "vehiclelist_cmd.h"
18 #include "cargo_type.h"
20 std::tuple
<CommandCost
, VehicleID
, uint
, uint16_t, CargoArray
> CmdBuildVehicle(DoCommandFlag flags
, TileIndex tile
, EngineID eid
, bool use_free_vehicles
, CargoID cargo
, ClientID client_id
);
21 CommandCost
CmdSellVehicle(DoCommandFlag flags
, VehicleID v_id
, bool sell_chain
, bool backup_order
, ClientID client_id
);
22 std::tuple
<CommandCost
, uint
, uint16_t, CargoArray
> CmdRefitVehicle(DoCommandFlag flags
, VehicleID veh_id
, CargoID new_cid
, uint8_t new_subtype
, bool auto_refit
, bool only_this
, uint8_t num_vehicles
);
23 CommandCost
CmdSendVehicleToDepot(DoCommandFlag flags
, VehicleID veh_id
, DepotCommand depot_cmd
, const VehicleListIdentifier
&vli
);
24 CommandCost
CmdChangeServiceInt(DoCommandFlag flags
, VehicleID veh_id
, uint16_t serv_int
, bool is_custom
, bool is_percent
);
25 CommandCost
CmdRenameVehicle(DoCommandFlag flags
, VehicleID veh_id
, const std::string
&text
);
26 std::tuple
<CommandCost
, VehicleID
> CmdCloneVehicle(DoCommandFlag flags
, TileIndex tile
, VehicleID veh_id
, bool share_orders
);
27 CommandCost
CmdStartStopVehicle(DoCommandFlag flags
, VehicleID veh_id
, bool evaluate_startstop_cb
);
28 CommandCost
CmdMassStartStopVehicle(DoCommandFlag flags
, TileIndex tile
, bool do_start
, bool vehicle_list_window
, const VehicleListIdentifier
&vli
);
29 CommandCost
CmdDepotSellAllVehicles(DoCommandFlag flags
, TileIndex tile
, VehicleType vehicle_type
);
30 CommandCost
CmdDepotMassAutoReplace(DoCommandFlag flags
, TileIndex tile
, VehicleType vehicle_type
);
32 DEF_CMD_TRAIT(CMD_BUILD_VEHICLE
, CmdBuildVehicle
, CMD_CLIENT_ID
, CMDT_VEHICLE_CONSTRUCTION
)
33 DEF_CMD_TRAIT(CMD_SELL_VEHICLE
, CmdSellVehicle
, CMD_CLIENT_ID
| CMD_LOCATION
, CMDT_VEHICLE_CONSTRUCTION
)
34 DEF_CMD_TRAIT(CMD_REFIT_VEHICLE
, CmdRefitVehicle
, CMD_LOCATION
, CMDT_VEHICLE_CONSTRUCTION
)
35 DEF_CMD_TRAIT(CMD_SEND_VEHICLE_TO_DEPOT
, CmdSendVehicleToDepot
, 0, CMDT_VEHICLE_MANAGEMENT
)
36 DEF_CMD_TRAIT(CMD_CHANGE_SERVICE_INT
, CmdChangeServiceInt
, 0, CMDT_VEHICLE_MANAGEMENT
)
37 DEF_CMD_TRAIT(CMD_RENAME_VEHICLE
, CmdRenameVehicle
, 0, CMDT_OTHER_MANAGEMENT
)
38 DEF_CMD_TRAIT(CMD_CLONE_VEHICLE
, CmdCloneVehicle
, CMD_NO_TEST
, CMDT_VEHICLE_CONSTRUCTION
) // NewGRF callbacks influence building and refitting making it impossible to correctly estimate the cost
39 DEF_CMD_TRAIT(CMD_START_STOP_VEHICLE
, CmdStartStopVehicle
, CMD_LOCATION
, CMDT_VEHICLE_MANAGEMENT
)
40 DEF_CMD_TRAIT(CMD_MASS_START_STOP
, CmdMassStartStopVehicle
, 0, CMDT_VEHICLE_MANAGEMENT
)
41 DEF_CMD_TRAIT(CMD_DEPOT_SELL_ALL_VEHICLES
, CmdDepotSellAllVehicles
, 0, CMDT_VEHICLE_CONSTRUCTION
)
42 DEF_CMD_TRAIT(CMD_DEPOT_MASS_AUTOREPLACE
, CmdDepotMassAutoReplace
, 0, CMDT_VEHICLE_CONSTRUCTION
)
44 void CcBuildPrimaryVehicle(Commands cmd
, const CommandCost
&result
, VehicleID new_veh_id
, uint
, uint16_t, CargoArray
);
45 void CcStartStopVehicle(Commands cmd
, const CommandCost
&result
, VehicleID veh_id
, bool);
47 template <typename Tcont
, typename Titer
>
48 inline EndianBufferWriter
<Tcont
, Titer
> &operator <<(EndianBufferWriter
<Tcont
, Titer
> &buffer
, const CargoArray
&cargo_array
)
50 for (const uint
&amt
: cargo_array
) {
56 inline EndianBufferReader
&operator >>(EndianBufferReader
&buffer
, CargoArray
&cargo_array
)
58 for (uint
&amt
: cargo_array
) {
64 #endif /* VEHICLE_CMD_H */