Improve handling of conditional order waiting loops
Do not leave station/depot/waypoint at all if conditional order loop would result in re-starting waiting/loading Only actually leave and update timetable at end of loop Rate-limit loop checks regardless of timetabled wait time
This commit is contained in:
@@ -21,7 +21,16 @@ void CheckOrders(const Vehicle*);
|
||||
void DeleteVehicleOrders(Vehicle *v, bool keep_orderlist = false, bool reset_order_indices = true);
|
||||
bool ProcessOrders(Vehicle *v);
|
||||
bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth = 0, bool pbs_look_ahead = false);
|
||||
VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v, bool dry_run = false);
|
||||
|
||||
enum ProcessConditionalOrderMode {
|
||||
PCO_EXEC,
|
||||
PCO_DRY_RUN,
|
||||
PCO_DEFERRED,
|
||||
};
|
||||
|
||||
VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v, ProcessConditionalOrderMode mode = PCO_EXEC);
|
||||
VehicleOrderID AdvanceOrderIndexDeferred(const Vehicle *v, VehicleOrderID index);
|
||||
void FlushAdvanceOrderIndexDeferred(const Vehicle *v, bool apply);
|
||||
uint GetOrderDistance(const Order *prev, const Order *cur, const Vehicle *v, int conditional_depth = 0);
|
||||
|
||||
void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int left, int middle, int right);
|
||||
|
||||
Reference in New Issue
Block a user