mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-01 03:48:43 +00:00
(svn r21832) -Feature: limit vehicle lateness to the length of a full timetable cycle, e.g. when a cycle takes 50 days and the vehicle is 65 days later reduce the lateness to 15 days
This commit is contained in:
parent
39d7f3b2bd
commit
3f900d3580
@ -310,6 +310,18 @@ void UpdateVehicleTimetable(Vehicle *v, bool travelling)
|
|||||||
|
|
||||||
v->lateness_counter -= (timetabled - time_taken);
|
v->lateness_counter -= (timetabled - time_taken);
|
||||||
|
|
||||||
|
/* When we are more late than this timetabled bit takes we (somewhat expensively)
|
||||||
|
* check how many ticks the (fully filled) timetable has. If a timetable cycle is
|
||||||
|
* shorter than the amount of ticks we are late we reduce the lateness by the
|
||||||
|
* length of a full cycle till lateness is less than the length of a timetable
|
||||||
|
* cycle. When the timetable isn't fully filled the cycle will be INVALID_TICKS. */
|
||||||
|
if (v->lateness_counter > (int)timetabled) {
|
||||||
|
Ticks cycle = v->orders.list->GetTimetableTotalDuration();
|
||||||
|
if (cycle != INVALID_TICKS && v->lateness_counter > cycle) {
|
||||||
|
v->lateness_counter %= cycle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (v = v->FirstShared(); v != NULL; v = v->NextShared()) {
|
for (v = v->FirstShared(); v != NULL; v = v->NextShared()) {
|
||||||
SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index);
|
SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user