tron@2186: /* $Id$ */ tron@2186: rubidium@8784: /** @file order_func.h Functions related to orders. */ celestar@2214: rubidium@8784: #ifndef ORDER_FUNC_H rubidium@8784: #define ORDER_FUNC_H truelight@1024: rubidium@8771: #include "order_type.h" rubidium@8119: #include "vehicle_type.h" rubidium@8138: #include "tile_type.h" rubidium@8770: #include "group_type.h" rubidium@8784: #include "date_type.h" truelight@1024: rubidium@7653: struct BackuppedOrders { rubidium@8322: BackuppedOrders() : order(NULL), name(NULL) { } rubidium@8322: ~BackuppedOrders() { free(order); free(name); } Darkvater@2433: truelight@1024: VehicleID clone; truelight@4391: VehicleOrderID orderindex; glx@8650: GroupID group; rubidium@7653: Order *order; truelight@1024: uint16 service_interval; peter1138@8258: char *name; rubidium@6248: }; truelight@1024: rubidium@8268: extern TileIndex _backup_orders_tile; rubidium@8268: extern BackuppedOrders _backup_orders_data; truelight@1024: rubidium@8784: void BackupVehicleOrders(const Vehicle *v, BackuppedOrders *order = &_backup_orders_data); rubidium@8784: void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *order = &_backup_orders_data); truelight@1024: truelight@1024: /* Functions */ truelight@4389: void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination); smatz@10184: void InvalidateVehicleOrder(const Vehicle *v, int data); truelight@1024: bool VehicleHasDepotOrders(const Vehicle *v); tron@3140: void CheckOrders(const Vehicle*); truelight@1024: void DeleteVehicleOrders(Vehicle *v); rubidium@8827: bool ProcessOrders(Vehicle *v); rubidium@9807: bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth = 0); rubidium@9807: VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v); truelight@1024: rubidium@9639: void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int width); maedhros@8929: rubidium@8211: #define MIN_SERVINT_PERCENT 5 rubidium@8211: #define MAX_SERVINT_PERCENT 90 rubidium@8211: #define MIN_SERVINT_DAYS 30 rubidium@8211: #define MAX_SERVINT_DAYS 800 rubidium@8211: rubidium@8211: /** rubidium@8211: * Get the service interval domain. rubidium@8211: * Get the new proposed service interval for the vehicle is indeed, clamped rubidium@8211: * within the given bounds. @see MIN_SERVINT_PERCENT ,etc. rubidium@8211: * @param index proposed service interval rubidium@8211: * @return service interval rubidium@8211: */ rubidium@8211: Date GetServiceIntervalClamped(uint index); rubidium@8211: rubidium@8784: #endif /* ORDER_FUNC_H */