From 4528004bb8a6d851955b9ad3e2243b369ec2ed26 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 31 May 2017 19:03:25 +0100 Subject: [PATCH] Call UpdateScheduledDispatch() at first waiting, even when not travelling. This is so that the schedule start point is advanced if a train arrives at the first waiting point before but leaves at or after the schedule end time. --- src/timetable_cmd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/timetable_cmd.cpp b/src/timetable_cmd.cpp index fc40fd9bfd..5f6ec72260 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -872,10 +872,12 @@ void UpdateVehicleTimetable(Vehicle *v, bool travelling) v->current_order_time = 0; v->current_loading_time = 0; } else if (HasBit(v->vehicle_flags, VF_SCHEDULED_DISPATCH) && HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) { - if (IsVehicleAtFirstWaitingLocation(v) && travelling) { + const bool is_first_waiting = IsVehicleAtFirstWaitingLocation(v); + if (is_first_waiting) { /* Update scheduled information */ v->orders.list->UpdateScheduledDispatch(); - + } + if (is_first_waiting && travelling) { DateTicksScaled slot = GetScheduledDispatchTime(v); if (slot > -1) { v->lateness_counter = _scaled_date_ticks - slot;