GSOrder Class Reference

Class that handles all order related functions. More...


Public Types

enum  ErrorMessages {
  ERR_ORDER_BASE,
  ERR_ORDER_TOO_MANY,
  ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION,
  ERR_ORDER_AIRCRAFT_NOT_ENOUGH_RANGE
}
 All order related error messages. More...
enum  GSOrderFlags {
  OF_NONE,
  OF_NON_STOP_INTERMEDIATE,
  OF_NON_STOP_DESTINATION,
  OF_UNLOAD,
  OF_TRANSFER,
  OF_NO_UNLOAD,
  OF_FULL_LOAD,
  OF_FULL_LOAD_ANY,
  OF_NO_LOAD,
  OF_SERVICE_IF_NEEDED,
  OF_STOP_IN_DEPOT,
  OF_GOTO_NEAREST_DEPOT,
  OF_NON_STOP_FLAGS,
  OF_UNLOAD_FLAGS,
  OF_LOAD_FLAGS,
  OF_DEPOT_FLAGS,
  OF_INVALID
}
 Flags that can be used to modify the behaviour of orders. More...
enum  OrderCondition {
  OC_LOAD_PERCENTAGE,
  OC_RELIABILITY,
  OC_MAX_SPEED,
  OC_AGE,
  OC_REQUIRES_SERVICE,
  OC_UNCONDITIONALLY,
  OC_REMAINING_LIFETIME,
  OC_INVALID
}
 All conditions a conditional order can depend on. More...
enum  CompareFunction {
  CF_EQUALS,
  CF_NOT_EQUALS,
  CF_LESS_THAN,
  CF_LESS_EQUALS,
  CF_MORE_THAN,
  CF_MORE_EQUALS,
  CF_IS_TRUE,
  CF_IS_FALSE,
  CF_INVALID
}
 Comparators for conditional orders. More...
enum  OrderPosition {
  ORDER_CURRENT,
  ORDER_INVALID
}
 Index in the list of orders for a vehicle. More...
enum  StopLocation {
  STOPLOCATION_NEAR,
  STOPLOCATION_MIDDLE,
  STOPLOCATION_FAR,
  STOPLOCATION_INVALID
}
 Where to stop trains in a station that's longer than the train. More...

Static Public Member Functions

static bool IsValidVehicleOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order id is valid for the given vehicle.
static bool IsGotoStationOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order is a goto-station order.
static bool IsGotoDepotOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order is a goto-depot order.
static bool IsGotoWaypointOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order is a goto-waypoint order.
static bool IsConditionalOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order is a conditional order.
static bool IsVoidOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order is a void order.
static bool IsRefitOrder (VehicleID vehicle_id, OrderPosition order_position)
 Checks whether the given order has a valid refit cargo.
static bool IsCurrentOrderPartOfOrderList (VehicleID vehicle_id)
 Checks whether the current order is part of the orderlist.
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, GSOrderFlags order_flags)
 Checks whether the given order flags are valid for the given destination.
static bool IsValidConditionalOrder (OrderCondition condition, CompareFunction compare)
 Checks whether the given combination of condition and compare function is valid.
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 GSOrderFlags GetOrderFlags (VehicleID vehicle_id, OrderPosition order_position)
 Gets the GSOrderFlags of the given order for the given vehicle.
static OrderPosition GetOrderJumpTo (VehicleID vehicle_id, OrderPosition order_position)
 Gets the OrderPosition to jump to if the check succeeds of the given order for the given vehicle.
static OrderCondition GetOrderCondition (VehicleID vehicle_id, OrderPosition order_position)
 Gets the OrderCondition of the given order for the given vehicle.
static CompareFunction GetOrderCompareFunction (VehicleID vehicle_id, OrderPosition order_position)
 Gets the CompareFunction of the given order for the given vehicle.
static int32 GetOrderCompareValue (VehicleID vehicle_id, OrderPosition order_position)
 Gets the value to compare against of the given order for the given vehicle.
static StopLocation GetStopLocation (VehicleID vehicle_id, OrderPosition order_position)
 Gets the stoplocation of the given order for the given train.
static CargoID GetOrderRefit (VehicleID vehicle_id, OrderPosition order_position)
 Gets the refit cargo type of the given order for the given vehicle.
static uint GetOrderDistance (GSVehicle::VehicleType vehicle_type, TileIndex origin_tile, TileIndex dest_tile)
 Get the distance between two points for a vehicle type.


Detailed Description

Class that handles all order related functions.

Member Enumeration Documentation

All order related error messages.

Enumerator:
ERR_ORDER_BASE  Base for all order related errors.
ERR_ORDER_TOO_MANY  No more space for orders.
ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION  Destination of new order is to far away from the previous order.
ERR_ORDER_AIRCRAFT_NOT_ENOUGH_RANGE  Aircraft has not enough range to copy/share orders.

Flags that can be used to modify the behaviour of orders.

Enumerator:
OF_NONE  Just go to the station/depot, stop unload if possible and load if needed.

OF_NON_STOP_INTERMEDIATE  Do not stop at the stations that are passed when going to the destination.

Only for trains and road vehicles.

OF_NON_STOP_DESTINATION  Do not stop at the destination station.

Only for trains and road vehicles.

OF_UNLOAD  Always unload the vehicle; only for stations.

Cannot be set when OF_TRANSFER or OF_NO_UNLOAD is set.

OF_TRANSFER  Transfer instead of deliver the goods; only for stations.

Cannot be set when OF_UNLOAD or OF_NO_UNLOAD is set.

OF_NO_UNLOAD  Never unload the vehicle; only for stations.

Cannot be set when OF_UNLOAD, OF_TRANSFER or OF_NO_LOAD is set.

OF_FULL_LOAD  Wt till the vehicle is fully loaded; only for stations.

Cannot be set when OF_NO_LOAD is set.

OF_FULL_LOAD_ANY  Wt till at least one cargo of the vehicle is fully loaded; only for stations.

Cannot be set when OF_NO_LOAD is set.

OF_NO_LOAD  Do not load any cargo; only for stations.

Cannot be set when OF_NO_UNLOAD, OF_FULL_LOAD or OF_FULL_LOAD_ANY is set.

OF_SERVICE_IF_NEEDED  Service the vehicle when needed, otherwise skip this order; only for depots.

OF_STOP_IN_DEPOT  Stop in the depot instead of only go there for servicing; only for depots.

OF_GOTO_NEAREST_DEPOT  Go to nearest depot.

OF_NON_STOP_FLAGS  All flags related to non-stop settings.

OF_UNLOAD_FLAGS  All flags related to unloading.

OF_LOAD_FLAGS  All flags related to loading.

OF_DEPOT_FLAGS  All flags related to depots.

OF_INVALID  For marking invalid order flags.

All conditions a conditional order can depend on.

Enumerator:
OC_LOAD_PERCENTAGE  Skip based on the amount of load, value is in tons.
OC_RELIABILITY  Skip based on the reliability, value is percent (0..100).
OC_MAX_SPEED  Skip based on the maximum speed, value is in OpenTTD's internal speed unit, see GSEngine::GetMaxSpeed.
OC_AGE  Skip based on the age, value is in years.
OC_REQUIRES_SERVICE  Skip when the vehicle requires service, no value.
OC_UNCONDITIONALLY  Always skip, no compare function, no value.
OC_REMAINING_LIFETIME  Skip based on the remaining lifetime.
OC_INVALID  An invalid condition, do not use.

Comparators for conditional orders.

Enumerator:
CF_EQUALS  Skip if both values are equal.
CF_NOT_EQUALS  Skip if both values are not equal.
CF_LESS_THAN  Skip if the value is less than the limit.
CF_LESS_EQUALS  Skip if the value is less or equal to the limit.
CF_MORE_THAN  Skip if the value is more than the limit.
CF_MORE_EQUALS  Skip if the value is more or equal to the limit.
CF_IS_TRUE  Skip if the variable is true.
CF_IS_FALSE  Skip if the variable is false.
CF_INVALID  Invalid compare function, do not use.

Index in the list of orders for a vehicle.

The first order has index 0, the second order index 1, etc. The current order can be queried by using ORDER_CURRENT. Do not use ORDER_INVALID yourself, it's used as return value by for example ResolveOrderPosition.

Note:
Automatic orders are hidden from scripts, so OrderPosition 0 will always be the first manual order.
Enumerator:
ORDER_CURRENT  Constant that gets resolved to the current order.
ORDER_INVALID  An invalid order.

Where to stop trains in a station that's longer than the train.

Enumerator:
STOPLOCATION_NEAR  Stop the train as soon as it's completely in the station.
STOPLOCATION_MIDDLE  Stop the train in the middle of the station.
STOPLOCATION_FAR  Stop the train at the far end of the station.
STOPLOCATION_INVALID  An invalid stop location.


Member Function Documentation

static bool GSOrder::IsValidVehicleOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order id is valid for the given vehicle.

Parameters:
vehicle_id The vehicle to check the order index for.
order_position The order index to check.
Precondition:
GSVehicle::IsValidVehicle(vehicle_id).
Returns:
True if and only if the order_position is valid for the given vehicle.

static bool GSOrder::IsGotoStationOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order is a goto-station order.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is a goto-station order.

static bool GSOrder::IsGotoDepotOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order is a goto-depot order.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is a goto-depot order.

static bool GSOrder::IsGotoWaypointOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order is a goto-waypoint order.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is a goto-waypoint order.

static bool GSOrder::IsConditionalOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order is a conditional order.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
order_position != ORDER_CURRENT && IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is a conditional order.

static bool GSOrder::IsVoidOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order is a void order.

A void order is an order that used to be a goto station, depot or waypoint order but its destination got removed. In OpenTTD these orders as shown as "(Invalid Order)" in the order list of a vehicle.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
order_position != ORDER_CURRENT && IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is a void order.

static bool GSOrder::IsRefitOrder ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Checks whether the given order has a valid refit cargo.

Parameters:
vehicle_id The vehicle to check.
order_position The order index to check.
Precondition:
order_position != ORDER_CURRENT && IsValidVehicleOrder(vehicle_id, order_position).
Returns:
True if and only if the order is has a valid refit cargo.

static bool GSOrder::IsCurrentOrderPartOfOrderList ( VehicleID  vehicle_id  )  [static]

Checks whether the current order is part of the orderlist.

Parameters:
vehicle_id The vehicle to check.
Precondition:
GSVehicle::IsValidVehicle(vehicle_id).
Returns:
True if and only if the current order is part of the order list.
Note:
If the order is a non-'non-stop' order, and the vehicle is currently (un)loading at a station that is not the final destination, this function will still return true.

static OrderPosition GSOrder::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 ORDER_CURRENT 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.

Parameters:
vehicle_id The vehicle to check the order index for.
order_position The order index to resolve.
Precondition:
GSVehicle::IsValidVehicle(vehicle_id).
Returns:
The resolved order index.

static bool GSOrder::AreOrderFlagsValid ( TileIndex  destination,
GSOrderFlags  order_flags 
) [static]

Checks whether the given order flags are valid for the given destination.

Parameters:
destination The destination of the order.
order_flags The flags given to the order.
Returns:
True if and only if the order_flags are valid for the given location.

static bool GSOrder::IsValidConditionalOrder ( OrderCondition  condition,
CompareFunction  compare 
) [static]

Checks whether the given combination of condition and compare function is valid.

Parameters:
condition The condition to check.
compare The compare function to check.
Returns:
True if and only if the combination of condition and compare function is valid.

static int32 GSOrder::GetOrderCount ( VehicleID  vehicle_id  )  [static]

Returns the number of orders for the given vehicle.

Parameters:
vehicle_id The vehicle to get the order count of.
Precondition:
GSVehicle::IsValidVehicle(vehicle_id).
Returns:
The number of orders for the given vehicle or a negative value when the vehicle does not exist.

static TileIndex GSOrder::GetOrderDestination ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the destination of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the destination for.
order_position The order to get the destination for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position == ORDER_CURRENT || !IsConditionalOrder(vehicle_id, order_position).

Note:
Giving ORDER_CURRENT as order_position will give the order that is currently being executed by the vehicle. This is not necessarily the current order as given by ResolveOrderPosition (the current index in the order list) as manual or autoservicing depot orders do not show up in the orderlist, but they can be the current order of a vehicle.
Returns:
The destination tile of the order.

static GSOrderFlags GSOrder::GetOrderFlags ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the GSOrderFlags of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the destination for.
order_position The order to get the destination for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position == ORDER_CURRENT || (!IsConditionalOrder(vehicle_id, order_position) && !IsVoidOrder(vehicle_id, order_position)).

Note:
Giving ORDER_CURRENT as order_position will give the order that is currently being executed by the vehicle. This is not necessarily the current order as given by ResolveOrderPosition (the current index in the order list) as manual or autoservicing depot orders do not show up in the orderlist, but they can be the current order of a vehicle.
Returns:
The GSOrderFlags of the order.

static OrderPosition GSOrder::GetOrderJumpTo ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the OrderPosition to jump to if the check succeeds of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the OrderPosition for.
order_position The order to get the OrderPosition for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position != ORDER_CURRENT && IsConditionalOrder(vehicle_id, order_position).

Returns:
The target of the conditional jump.

static OrderCondition GSOrder::GetOrderCondition ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the OrderCondition of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the condition type for.
order_position The order to get the condition type for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position != ORDER_CURRENT && IsConditionalOrder(vehicle_id, order_position).

Returns:
The OrderCondition of the order.

static CompareFunction GSOrder::GetOrderCompareFunction ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the CompareFunction of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the compare function for.
order_position The order to get the compare function for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position != ORDER_CURRENT && IsConditionalOrder(vehicle_id, order_position).

Returns:
The CompareFunction of the order.

static int32 GSOrder::GetOrderCompareValue ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the value to compare against of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the value for.
order_position The order to get the value for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position != ORDER_CURRENT && IsConditionalOrder(vehicle_id, order_position).

Returns:
The value to compare against of the order.

static StopLocation GSOrder::GetStopLocation ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the stoplocation of the given order for the given train.

Parameters:
vehicle_id The vehicle to get the value for.
order_position The order to get the value for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

GSVehicle::GetVehicleType(vehicle_id) == GSVehicle::VT_RAIL.

IsGotoStationOrder(vehicle_id, order_position).

Returns:
The relative position where the train will stop inside a station.

static CargoID GSOrder::GetOrderRefit ( VehicleID  vehicle_id,
OrderPosition  order_position 
) [static]

Gets the refit cargo type of the given order for the given vehicle.

Parameters:
vehicle_id The vehicle to get the refit cargo for.
order_position The order to get the refit cargo for.
Precondition:
IsValidVehicleOrder(vehicle_id, order_position).

order_position == ORDER_CURRENT || IsGotoStationOrder(vehicle_id, order_position) || IsGotoDepotOrder(vehicle_id, order_position).

Note:
Giving ORDER_CURRENT as order_position will give the order that is currently being executed by the vehicle. This is not necessarily the current order as given by ResolveOrderPosition (the current index in the order list) as manual or autoservicing depot orders do not show up in the orderlist, but they can be the current order of a vehicle.
Returns:
The refit cargo of the order or CT_NO_REFIT if no refit is set.

static uint GSOrder::GetOrderDistance ( GSVehicle::VehicleType  vehicle_type,
TileIndex  origin_tile,
TileIndex  dest_tile 
) [static]

Get the distance between two points for a vehicle type.

Use this function to compute the distance between two tiles wrt. a vehicle type. These vehicle-type specific distances are independent from other map distances, you may use the result of this function to compare it with the result of GSEngine::GetMaximumOrderDistance or GSVehicle::GetMaximumOrderDistance.

Parameters:
vehicle_type The vehicle type to get the distance for.
origin_tile Origin, can be any tile or a tile of a specific station.
dest_tile Destination, can be any tile or a tile of a specific station.
Returns:
The distance between the origin and the destination for a vehicle of the given vehicle type.
Note:
The unit of the order distances is unspecified and should not be compared with map distances
See also:
GSEngine::GetMaximumOrderDistance and GSVehicle::GetMaximumOrderDistance


Generated on Sun Mar 31 21:37:41 2013 for OpenTTD Game API by  doxygen 1.5.6