OpenTTD Source: src/order_cmd.h Source File

OpenTTD Source 15.3

order_cmd.h
Go to the documentation of this file.
1/*
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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
10#ifndef ORDER_CMD_H
11#define ORDER_CMD_H
12
13#include "command_type.h"
14#include "order_base.h"
15#include "misc/endian_buffer.hpp"
16
17 CommandCost CmdModifyOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID sel_ord, ModifyOrderFlags mof, uint16_t data);
18 CommandCost CmdSkipToOrder(DoCommandFlags flags, VehicleID veh_id, VehicleOrderID sel_ord);
19 CommandCost CmdDeleteOrder(DoCommandFlags flags, VehicleID veh_id, VehicleOrderID sel_ord);
20 CommandCost CmdInsertOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID sel_ord, const Order &new_order);
21 CommandCost CmdOrderRefit(DoCommandFlags flags, VehicleID veh, VehicleOrderID order_number, CargoType cargo);
22 CommandCost CmdCloneOrder(DoCommandFlags flags, CloneOptions action, VehicleID veh_dst, VehicleID veh_src);
23 CommandCost CmdMoveOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID moving_order, VehicleOrderID target_order);
24 CommandCost CmdClearOrderBackup(DoCommandFlags flags, TileIndex tile, ClientID user_id);
25
26DEF_CMD_TRAIT(CMD_MODIFY_ORDER, CmdModifyOrder, CommandFlag::Location, CommandType::RouteManagement)
27DEF_CMD_TRAIT(CMD_SKIP_TO_ORDER, CmdSkipToOrder, CommandFlag::Location, CommandType::RouteManagement)
28DEF_CMD_TRAIT(CMD_DELETE_ORDER, CmdDeleteOrder, CommandFlag::Location, CommandType::RouteManagement)
29DEF_CMD_TRAIT(CMD_INSERT_ORDER, CmdInsertOrder, CommandFlag::Location, CommandType::RouteManagement)
30DEF_CMD_TRAIT(CMD_ORDER_REFIT, CmdOrderRefit, CommandFlag::Location, CommandType::RouteManagement)
31DEF_CMD_TRAIT(CMD_CLONE_ORDER, CmdCloneOrder, CommandFlag::Location, CommandType::RouteManagement)
32DEF_CMD_TRAIT(CMD_MOVE_ORDER, CmdMoveOrder, CommandFlag::Location, CommandType::RouteManagement)
33DEF_CMD_TRAIT(CMD_CLEAR_ORDER_BACKUP, CmdClearOrderBackup, CommandFlag::ClientID, CommandType::ServerSetting)
34
35template <typename Tcont, typename Titer>
36inline EndianBufferWriter<Tcont, Titer> &operator <<(EndianBufferWriter<Tcont, Titer> &buffer, const Order &order)
37{
38 return buffer << order.type << order.flags << order.dest.value << order.refit_cargo << order.wait_time << order.travel_time << order.max_speed;
39}
40
41inline EndianBufferReader &operator >>(EndianBufferReader &buffer, Order &order)
42{
43 return buffer >> order.type >> order.flags >> order.dest.value >> order.refit_cargo >> order.wait_time >> order.travel_time >> order.max_speed;
44}
45
46#endif /* ORDER_CMD_H */
CargoType
uint8_t CargoType
Cargo slots to indicate a cargo type within a game.
Definition cargo_type.h:21
CommandCost
Common return value for all commands.
Definition command_type.h:24
EndianBufferReader
Endian-aware buffer adapter that always reads values in little endian order.
Definition endian_buffer.hpp:145
EndianBufferWriter
Endian-aware buffer adapter that always writes values in little endian order.
Definition endian_buffer.hpp:24
EnumBitSet
Enum-as-bit-set wrapper.
Definition enum_type.hpp:177
command_type.h
Types related to commands.
CommandType::RouteManagement
@ RouteManagement
Modifications to route management (orders, groups, etc).
CommandType::ServerSetting
@ ServerSetting
Pausing/removing companies/server settings.
CommandFlag::ClientID
@ ClientID
set p2 with the ClientID of the sending client.
CommandFlag::Location
@ Location
the command has implicit location argument.
CMD_MODIFY_ORDER
@ CMD_MODIFY_ORDER
modify an order (like set full-load)
Definition command_type.h:251
CMD_MOVE_ORDER
@ CMD_MOVE_ORDER
move an order
Definition command_type.h:363
CMD_CLONE_ORDER
@ CMD_CLONE_ORDER
clone (and share) an order
Definition command_type.h:304
CMD_SKIP_TO_ORDER
@ CMD_SKIP_TO_ORDER
skip an order to the next of specific one
Definition command_type.h:252
CMD_DELETE_ORDER
@ CMD_DELETE_ORDER
delete an order
Definition command_type.h:253
CMD_ORDER_REFIT
@ CMD_ORDER_REFIT
change the refit information of an order (for "goto depot" )
Definition command_type.h:303
CMD_CLEAR_ORDER_BACKUP
@ CMD_CLEAR_ORDER_BACKUP
clear the order backup of a given user/tile
Definition command_type.h:250
CMD_INSERT_ORDER
@ CMD_INSERT_ORDER
insert a new order
Definition command_type.h:254
endian_buffer.hpp
Endian-aware buffer.
ClientID
ClientID
'Unique' identifier to be given to clients
Definition network_type.h:43
order_base.h
Base class for orders.
CmdSkipToOrder
CommandCost CmdSkipToOrder(DoCommandFlags flags, VehicleID veh_id, VehicleOrderID sel_ord)
Goto order of order-list.
Definition order_cmd.cpp:1036
CmdClearOrderBackup
CommandCost CmdClearOrderBackup(DoCommandFlags flags, TileIndex tile, ClientID user_id)
Clear an OrderBackup.
Definition order_backup.cpp:132
CmdOrderRefit
CommandCost CmdOrderRefit(DoCommandFlags flags, VehicleID veh, VehicleOrderID order_number, CargoType cargo)
Add/remove refit orders from an order.
Definition order_cmd.cpp:1634
CmdInsertOrder
CommandCost CmdInsertOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID sel_ord, const Order &new_order)
Add an order to the orderlist of a vehicle.
Definition order_cmd.cpp:621
CmdModifyOrder
CommandCost CmdModifyOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID sel_ord, ModifyOrderFlags mof, uint16_t data)
Modify an order in the orderlist of a vehicle.
Definition order_cmd.cpp:1172
CmdCloneOrder
CommandCost CmdCloneOrder(DoCommandFlags flags, CloneOptions action, VehicleID veh_dst, VehicleID veh_src)
Clone/share/copy an order-list of another vehicle.
Definition order_cmd.cpp:1497
CmdDeleteOrder
CommandCost CmdDeleteOrder(DoCommandFlags flags, VehicleID veh_id, VehicleOrderID sel_ord)
Delete an order from the orderlist of a vehicle.
Definition order_cmd.cpp:934
CmdMoveOrder
CommandCost CmdMoveOrder(DoCommandFlags flags, VehicleID veh, VehicleOrderID moving_order, VehicleOrderID target_order)
Move an order inside the orderlist.
Definition order_cmd.cpp:1074
ModifyOrderFlags
ModifyOrderFlags
Enumeration for the data to set in CmdModifyOrder.
Definition order_type.h:159
VehicleOrderID
uint8_t VehicleOrderID
The index of an order within its current vehicle (not pool related)
Definition order_type.h:18
CloneOptions
CloneOptions
Clone actions.
Definition order_type.h:194
Order
Definition order_base.h:33
Order::max_speed
uint16_t max_speed
How fast the vehicle may go on the way to the destination.
Definition order_base.h:55
Order::type
uint8_t type
The type of order + non-stop flags.
Definition order_base.h:47
Order::wait_time
uint16_t wait_time
How long in ticks to wait at the destination.
Definition order_base.h:53
Order::flags
uint8_t flags
Load/unload types, depot order/action types.
Definition order_base.h:48
Order::dest
DestinationID dest
The destination of the order.
Definition order_base.h:49
Order::refit_cargo
CargoType refit_cargo
Refit CargoType.
Definition order_base.h:51
Order::travel_time
uint16_t travel_time
How long in ticks the journey to this destination should take.
Definition order_base.h:54
PoolID< uint32_t, struct VehicleIDTag, 0xFF000, 0xFFFFF >
StrongType::Typedef< uint32_t, struct TileIndexTag, StrongType::Compare, StrongType::Integer, StrongType::Compatible< int32_t >, StrongType::Compatible< int64_t > >