#include <ai_order.hpp>
Public Types | |
enum | ErrorMessages { ERR_ORDER_BASE = AIError::ERR_CAT_ORDER << AIError::ERR_CAT_BIT_SIZE, ERR_ORDER_TOO_MANY, ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION } |
All order related error messages. More... | |
enum | AIOrderFlags { AIOF_NONE = 0, AIOF_NON_STOP_INTERMEDIATE = 1 << 0, AIOF_NON_STOP_DESTINATION = 1 << 1, AIOF_UNLOAD = 1 << 2, AIOF_TRANSFER = 1 << 3, AIOF_NO_UNLOAD = 1 << 4, AIOF_FULL_LOAD = 2 << 5, AIOF_FULL_LOAD_ANY = 3 << 5, AIOF_NO_LOAD = 1 << 7, AIOF_SERVICE_IF_NEEDED = 1 << 2, AIOF_NON_STOP_FLAGS = AIOF_NON_STOP_INTERMEDIATE | AIOF_NON_STOP_DESTINATION, AIOF_UNLOAD_FLAGS = AIOF_TRANSFER | AIOF_UNLOAD | AIOF_NO_UNLOAD, AIOF_LOAD_FLAGS = AIOF_FULL_LOAD | AIOF_FULL_LOAD_ANY | AIOF_NO_LOAD, AIOF_INVALID = 0xFFFF } |
Flags that can be used to modify the behaviour of orders. More... | |
enum | OrderPosition { ORDER_CURRENT = 0xFF, ORDER_INVALID = -1 } |
Different constants related to the OrderPosition. More... | |
Static Public Member Functions | |
static const char * | GetClassName () |
static bool | IsValidVehicleOrder (VehicleID vehicle_id, OrderPosition order_position) |
Checks whether the given order id is valid for the given vehicle. | |
static OrderPosition | ResolveOrderPosition (VehicleID vehicle_id, OrderPosition order_position) |
Resolves the given order index to the correct index for the given vehicle. | |
static bool | AreOrderFlagsValid (TileIndex destination, AIOrderFlags order_flags) |
Checks whether the given order flags are valid for the given destination. | |
static int32 | GetOrderCount (VehicleID vehicle_id) |
Returns the number of orders for the given vehicle. | |
static TileIndex | GetOrderDestination (VehicleID vehicle_id, OrderPosition order_position) |
Gets the destination of the given order for the given vehicle. | |
static AIOrderFlags | GetOrderFlags (VehicleID vehicle_id, OrderPosition order_position) |
Gets the AIOrderFlags of the given order for the given vehicle. | |
static bool | AppendOrder (VehicleID vehicle_id, TileIndex destination, AIOrderFlags order_flags) |
Appends an order to the end of the vehicle's order list. | |
static bool | InsertOrder (VehicleID vehicle_id, OrderPosition order_position, TileIndex destination, AIOrderFlags order_flags) |
Inserts an order before the given order_position into the vehicle's order list. | |
static bool | RemoveOrder (VehicleID vehicle_id, OrderPosition order_position) |
Removes an order from the vehicle's order list. | |
static bool | _ChangeOrder () |
Internal function to help ChangeOrder. | |
static bool | ChangeOrder (VehicleID vehicle_id, OrderPosition order_position, AIOrderFlags order_flags) |
Changes the order flags of the given order. | |
static bool | MoveOrder (VehicleID vehicle_id, OrderPosition order_position_move, OrderPosition order_position_target) |
Move an order inside the orderlist. | |
static bool | CopyOrders (VehicleID vehicle_id, VehicleID main_vehicle_id) |
Copies the orders from another vehicle. | |
static bool | ShareOrders (VehicleID vehicle_id, VehicleID main_vehicle_id) |
Shares the orders between two vehicles. | |
static bool | UnshareOrders (VehicleID vehicle_id) |
Removes the given vehicle from a shared orders list. |
Definition at line 14 of file ai_order.hpp.
All order related error messages.
Definition at line 21 of file ai_order.hpp.
Flags that can be used to modify the behaviour of orders.
Definition at line 35 of file ai_order.hpp.
Different constants related to the OrderPosition.
ORDER_CURRENT | Constant that gets resolved to the current order. |
ORDER_INVALID | An invalid order. |
Definition at line 73 of file ai_order.hpp.
bool AIOrder::IsValidVehicleOrder | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position | |||
) | [static] |
Checks whether the given order id is valid for the given vehicle.
vehicle_id | The vehicle to check the order index for. | |
order_position | The order index to check. |
Definition at line 40 of file ai_order.cpp.
References AIVehicle::IsValidVehicle(), and ORDER_CURRENT.
Referenced by _ChangeOrder(), GetOrderDestination(), GetOrderFlags(), MoveOrder(), RemoveOrder(), and AIVehicle::SkipToVehicleOrder().
AIOrder::OrderPosition AIOrder::ResolveOrderPosition | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position | |||
) | [static] |
Resolves the given order index to the correct index for the given vehicle.
If the order index was CURRENT_ORDER it will be resolved to the index of the current order (as shown in the order list). If the order with the given index does not exist it will return ORDER_INVALID.
vehicle_id | The vehicle to check the order index for. | |
order_position | The order index to resolve. |
Definition at line 45 of file ai_order.cpp.
References AIVehicle::IsValidVehicle(), ORDER_CURRENT, and ORDER_INVALID.
Referenced by _ChangeOrder(), InsertOrder(), MoveOrder(), RemoveOrder(), and AIVehicle::SkipToVehicleOrder().
bool AIOrder::AreOrderFlagsValid | ( | TileIndex | destination, | |
AIOrderFlags | order_flags | |||
) | [static] |
Checks whether the given order flags are valid for the given destination.
destination | The destination of the order. | |
order_flags | The flags given to the order. |
Definition at line 54 of file ai_order.cpp.
References AIOF_FULL_LOAD_ANY, AIOF_LOAD_FLAGS, AIOF_NO_LOAD, AIOF_NO_UNLOAD, AIOF_NON_STOP_FLAGS, AIOF_SERVICE_IF_NEEDED, AIOF_TRANSFER, AIOF_UNLOAD, AIOF_UNLOAD_FLAGS, and GetOrderTypeByTile().
Referenced by _ChangeOrder(), and InsertOrder().
int32 AIOrder::GetOrderCount | ( | VehicleID | vehicle_id | ) | [static] |
Returns the number of orders for the given vehicle.
vehicle_id | The vehicle to get the order count of. |
Definition at line 73 of file ai_order.cpp.
References AIVehicle::IsValidVehicle().
TileIndex AIOrder::GetOrderDestination | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position | |||
) | [static] |
Gets the destination of the given order for the given vehicle.
vehicle_id | The vehicle to get the destination for. | |
order_position | The order to get the destination for. |
Definition at line 78 of file ai_order.cpp.
References INVALID_TILE, IsValidVehicleOrder(), and ORDER_CURRENT.
Referenced by _ChangeOrder().
AIOrder::AIOrderFlags AIOrder::GetOrderFlags | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position | |||
) | [static] |
Gets the AIOrderFlags of the given order for the given vehicle.
vehicle_id | The vehicle to get the destination for. | |
order_position | The order to get the destination for. |
Definition at line 102 of file ai_order.cpp.
References AIOF_INVALID, AIOF_NONE, AIOF_SERVICE_IF_NEEDED, IsValidVehicleOrder(), ODTFB_SERVICE, and ORDER_CURRENT.
Referenced by _ChangeOrder().
bool AIOrder::AppendOrder | ( | VehicleID | vehicle_id, | |
TileIndex | destination, | |||
AIOrderFlags | order_flags | |||
) | [static] |
Appends an order to the end of the vehicle's order list.
vehicle_id | The vehicle to append the order to. | |
destination | The destination of the order. | |
order_flags | The flags given to the order. |
AreOrderFlagsValid(destination, order_flags).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY | ||
AIOrder::ERR_ORDER_NO_MORE_SPACE | ||
AIOrder::ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION |
Definition at line 132 of file ai_order.cpp.
References EnforcePrecondition, InsertOrder(), and AIVehicle::IsValidVehicle().
bool AIOrder::InsertOrder | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position, | |||
TileIndex | destination, | |||
AIOrder::AIOrderFlags | order_flags | |||
) | [static] |
Inserts an order before the given order_position into the vehicle's order list.
vehicle_id | The vehicle to add the order to. | |
order_position | The order to place the new order before. | |
destination | The destination of the order. | |
order_flags | The flags given to the order. |
AreOrderFlagsValid(destination, order_flags).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY | ||
AIOrder::ERR_ORDER_NO_MORE_SPACE | ||
AIOrder::ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION |
Definition at line 138 of file ai_order.cpp.
References AIOF_SERVICE_IF_NEEDED, AreOrderFlagsValid(), CMD_INSERT_ORDER, AIObject::DoCommand(), EnforcePrecondition, GB(), GetDepotByTile(), GetOrderTypeByTile(), GetStationIndex(), GetWaypointIndex(), AIVehicle::IsValidVehicle(), ODTFB_PART_OF_ORDERS, ODTFB_SERVICE, ORDER_CURRENT, and ResolveOrderPosition().
Referenced by AppendOrder().
bool AIOrder::RemoveOrder | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position | |||
) | [static] |
Removes an order from the vehicle's order list.
vehicle_id | The vehicle to remove the order from. | |
order_position | The order to remove from the order list. |
AIError::ERR_OWNED_BY_ANOTHER_COMPANY |
Definition at line 172 of file ai_order.cpp.
References CMD_DELETE_ORDER, AIObject::DoCommand(), EnforcePrecondition, IsValidVehicleOrder(), and ResolveOrderPosition().
bool AIOrder::ChangeOrder | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position, | |||
AIOrder::AIOrderFlags | order_flags | |||
) | [static] |
Changes the order flags of the given order.
vehicle_id | The vehicle to change the order of. | |
order_position | The order to change. | |
order_flags | The new flags given to the order. |
AreOrderFlagsValid(GetOrderDestination(vehicle_id, order_position), order_flags).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY |
Definition at line 247 of file ai_order.cpp.
References _ChangeOrder().
bool AIOrder::MoveOrder | ( | VehicleID | vehicle_id, | |
OrderPosition | order_position_move, | |||
OrderPosition | order_position_target | |||
) | [static] |
Move an order inside the orderlist.
vehicle_id | The vehicle to move the orders. | |
order_position_move | The order to move. | |
order_position_target | The target order |
IsValidVehicleOrder(vehicle_id, order_position_target).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY |
Definition at line 258 of file ai_order.cpp.
References CMD_MOVE_ORDER, AIObject::DoCommand(), EnforcePrecondition, IsValidVehicleOrder(), and ResolveOrderPosition().
Copies the orders from another vehicle.
The orders of the main vehicle are going to be the orders of the changed vehicle.
vehicle_id | The vehicle to copy the orders to. | |
main_vehicle_id | The vehicle to copy the orders from. |
AIVehicle::IsValidVehicle(main_vehicle_id).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY | ||
AIOrder::ERR_ORDER_NO_MORE_SPACE |
Definition at line 269 of file ai_order.cpp.
References CMD_CLONE_ORDER, AIObject::DoCommand(), EnforcePrecondition, and AIVehicle::IsValidVehicle().
Shares the orders between two vehicles.
The orders of the main vehicle are going to be the orders of the changed vehicle.
vehicle_id | The vehicle to add to the shared order list. | |
main_vehicle_id | The vehicle to share the orders with. |
AIVehicle::IsValidVehicle(main_vehicle_id).
AIError::ERR_OWNED_BY_ANOTHER_COMPANY |
Definition at line 277 of file ai_order.cpp.
References CMD_CLONE_ORDER, AIObject::DoCommand(), EnforcePrecondition, and AIVehicle::IsValidVehicle().
bool AIOrder::UnshareOrders | ( | VehicleID | vehicle_id | ) | [static] |
Removes the given vehicle from a shared orders list.
vehicle_id | The vehicle to remove from the shared order list. |
Definition at line 285 of file ai_order.cpp.
References CMD_CLONE_ORDER, AIObject::DoCommand(), EnforcePrecondition, and AIVehicle::IsValidVehicle().