order_func.h File Reference

Functions related to orders. More...

#include "order_type.h"
#include "vehicle_type.h"
#include "company_type.h"

Go to the source code of this file.

Defines

#define MIN_SERVINT_PERCENT   5
#define MAX_SERVINT_PERCENT   90
#define MIN_SERVINT_DAYS   30
#define MAX_SERVINT_DAYS   800

Functions

void RemoveOrderFromAllVehicles (OrderType type, DestinationID destination)
 Removes an order from all vehicles.
void InvalidateVehicleOrder (const Vehicle *v, int data)
 Updates the widgets of a vehicle which contains the order-data.
void CheckOrders (const Vehicle *)
 Check the orders of a vehicle, to see if there are invalid orders and stuff.
void DeleteVehicleOrders (Vehicle *v, bool keep_orderlist=false)
 Delete all orders from a vehicle.
bool ProcessOrders (Vehicle *v)
 Handle the orders of a vehicle and determine the next place to go to if needed.
bool UpdateOrderDest (Vehicle *v, const Order *order, int conditional_depth=0)
 Update the vehicle's destination tile from an order.
VehicleOrderID ProcessConditionalOrder (const Order *order, const Vehicle *v)
 Process a conditional order and determine the next order.
void DrawOrderString (const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int left, int middle, int right)
 Draws an order in order or timetable GUI.
uint16 GetServiceIntervalClamped (uint interval, CompanyID company_id)
 Clamp the service interval to the correct min/max.

Detailed Description

Functions related to orders.

Definition in file order_func.h.


Function Documentation

void CheckOrders ( const Vehicle v  ) 
void DeleteVehicleOrders ( Vehicle v,
bool  keep_orderlist 
)
void DrawOrderString ( const Vehicle v,
const Order order,
int  order_index,
int  y,
bool  selected,
bool  timetable,
int  left,
int  middle,
int  right 
)
uint16 GetServiceIntervalClamped ( uint  interval,
CompanyID  company_id 
)

Clamp the service interval to the correct min/max.

The actual min/max values depend on whether it's in percent or days.

Parameters:
interval proposed service interval
company_id the owner of the vehicle
Returns:
Clamped service interval

Definition at line 1526 of file order_cmd.cpp.

References Clamp(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get().

Referenced by CmdChangeServiceInt(), and VehicleDetailsWindow::OnClick().

void InvalidateVehicleOrder ( const Vehicle v,
int  data 
)
VehicleOrderID ProcessConditionalOrder ( const Order order,
const Vehicle v 
)

Process a conditional order and determine the next order.

Parameters:
order the order the vehicle currently has
v the vehicle to update
Returns:
index of next order to jump to, or INVALID_VEH_ORDER_ID to use the next order

Definition at line 1582 of file order_cmd.cpp.

References Vehicle::age, CalcPercentVehicleFilled(), DAYS_IN_LEAP_YEAR, Order::GetConditionComparator(), Order::GetConditionSkipToOrder(), Order::GetConditionValue(), Order::GetConditionVariable(), Vehicle::GetDisplayMaxSpeed(), Order::GetType(), INVALID_VEH_ORDER_ID, Vehicle::NeedsServicing(), OCV_AGE, OCV_LOAD_PERCENTAGE, OCV_MAX_SPEED, OCV_RELIABILITY, OCV_REQUIRES_SERVICE, OCV_UNCONDITIONALLY, OrderConditionCompare(), Vehicle::reliability, and ToPercent16().

Referenced by VehicleOrderSaver::SwitchToNextOrder(), and UpdateOrderDest().

bool ProcessOrders ( Vehicle v  ) 

Handle the orders of a vehicle and determine the next place to go to if needed.

Parameters:
v the vehicle to do this for.
Returns:
true *if* the vehicle is eligible for reversing (basically only when leaving a station).

Reversing because of order change is allowed only just after leaving a station (and the difficulty setting to allowed, of course) this can be detected because only after OT_LEAVESTATION, current_order will be reset to nothing. (That also happens if no order, but in that case it won't hit the point in code where may_reverse is checked)

Definition at line 1704 of file order_cmd.cpp.

References CheckForValidOrders(), Vehicle::cur_order_index, Vehicle::current_order, Vehicle::dest_tile, Order::Free(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedStation< Station, false >::Get(), Order::GetDepotOrderType(), Order::GetDestination(), Vehicle::GetNextManualOrder(), Order::GetNonStopType(), Vehicle::GetNumOrders(), GetStationIndex(), Order::GetType(), GetWindowClassForVehicleType(), Vehicle::IncrementOrderIndex(), INVALID_TILE, InvalidateVehicleOrder(), IsTileType(), Order::IsType(), MP_STATION, ODTFB_PART_OF_ORDERS, ONSF_NO_STOP_AT_DESTINATION_STATION, SetWindowClassesDirty(), Vehicle::tile, BaseVehicle::type, UpdateOrderDest(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by CheckNextTrainTile().

void RemoveOrderFromAllVehicles ( OrderType  type,
DestinationID  destination 
)

Removes an order from all vehicles.

Triggers when, say, a station is removed.

Parameters:
type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]).
destination The destination. Can be a StationID, DepotID or WaypointID.

Definition at line 1443 of file order_cmd.cpp.

References Vehicle::current_order, DeleteOrder(), Vehicle::FirstShared(), Order::GetDepotActionType(), Order::GetDestination(), Order::GetType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_VEH_ORDER_ID, InvalidateVehicleOrder(), Order::IsType(), Order::MakeDummy(), Vehicle::NextShared(), ODATFB_NEAREST_DEPOT, SetWindowDirty(), BaseVehicle::type, and VEH_AIRCRAFT.

Referenced by Depot::~Depot(), and Station::~Station().

bool UpdateOrderDest ( Vehicle v,
const Order order,
int  conditional_depth 
)

Update the vehicle's destination tile from an order.

Parameters:
order the order the vehicle currently has
v the vehicle to update
conditional_depth the depth (amount of steps) to go with conditional orders. This to prevent infinite loops.

Definition at line 1609 of file order_cmd.cpp.

References AircraftNextAirportPos_and_Order(), CMD_REVERSE_TRAIN_DIRECTION, Vehicle::cur_order_index, Vehicle::current_order, Vehicle::current_order_time, DC_EXEC, Vehicle::dest_tile, DoCommand(), Vehicle::FindClosestDepot(), FLYING, Order::Free(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedStation< Waypoint, true >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_depot_pool >::Get(), Order::GetDepotActionType(), Order::GetDepotOrderType(), Order::GetDestination(), Vehicle::GetNextManualOrder(), Order::GetNonStopType(), Vehicle::GetNumOrders(), Vehicle::GetOrder(), Vehicle::GetOrderStationLocation(), Order::GetRefitCargo(), Order::GetRefitSubtype(), Order::GetType(), Vehicle::IncrementOrderIndex(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_VEH_ORDER_ID, Order::MakeGoToDepot(), Vehicle::NeedsServicing(), ODATFB_NEAREST_DEPOT, ODTFB_SERVICE, ProcessConditionalOrder(), Aircraft::state, Aircraft::targetairport, Vehicle::tile, Order::travel_time, BaseVehicle::type, UpdateOrderDest(), VEH_AIRCRAFT, and VEH_TRAIN.

Referenced by ProcessOrders(), VehicleOrderSaver::SwitchToNextOrder(), and UpdateOrderDest().


Generated on Fri Dec 31 17:15:49 2010 for OpenTTD by  doxygen 1.6.1