diff --git a/src/timetable_cmd.cpp b/src/timetable_cmd.cpp index 3a05be48e9..c32c398d38 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -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) { Order* order = v->orders.list->GetOrderAt(i); if (order->IsWaitTimetabled() && !order->IsType(OT_IMPLICIT) && !order->IsType(OT_CONDITIONAL)) { - first_wait_index = i; - break; + return i; } } + 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)