Scheduled dispatch: Do not require timetable to be fully timetabled

This commit is contained in:
Jonathan G Rennison
2020-01-28 19:21:56 +00:00
parent e53e960c50
commit 98d76832fc

View File

@@ -722,20 +722,21 @@ void UpdateSeparationOrder(Vehicle *v_start)
} }
} }
static bool IsVehicleAtFirstWaitingLocation(Vehicle *v) VehicleOrderID GetVehicleFirstWaitingLocation(const Vehicle *v)
{ {
/* Check if we arrive at first station */
int first_wait_index = -1;
for (int i = 0; i < v->orders.list->GetNumOrders(); ++i) { for (int i = 0; i < v->orders.list->GetNumOrders(); ++i) {
Order* order = v->orders.list->GetOrderAt(i); Order* order = v->orders.list->GetOrderAt(i);
if (order->IsWaitTimetabled() && !order->IsType(OT_IMPLICIT) && !order->IsType(OT_CONDITIONAL)) { if (order->IsWaitTimetabled() && !order->IsType(OT_IMPLICIT) && !order->IsType(OT_CONDITIONAL)) {
first_wait_index = i; return i;
break;
} }
} }
return INVALID_VEH_ORDER_ID;
}
return v->orders.list->IsCompleteTimetable() && (v->cur_implicit_order_index == first_wait_index); static bool IsVehicleAtFirstWaitingLocation(const Vehicle *v)
{
return (v->cur_implicit_order_index == GetVehicleFirstWaitingLocation(v));
} }
static DateTicksScaled GetScheduledDispatchTime(Vehicle *v, int wait_offset) static DateTicksScaled GetScheduledDispatchTime(Vehicle *v, int wait_offset)