diff --git a/src/lang/english.txt b/src/lang/english.txt index 01bdb9e775..e0a343294e 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5611,9 +5611,13 @@ STR_TIMETABLE_AND_TRAVEL_FOR :and travel for STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s} STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} STR_TIMETABLE_MINUTES :{COMMA}{NBSP}minute{P "" s} +STR_TIMETABLE_HOURS :{COMMA}{NBSP}hour{P "" s} +STR_TIMETABLE_HOURS_MINUTES :{COMMA}{NBSP}hour{P "" s} and {COMMA}{NBSP}minute{P "" s} STR_TIMETABLE_LEFTOVER_TICKS :{STRING1} + {COMMA} tick{P "" s} +STR_TIMETABLE_MINUTES_LONG :{COMMA}{NBSP}minute{P "" s} ({STRING2}){STRING3} + STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING3} to complete STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING3} to complete (not all timetabled) @@ -7066,8 +7070,9 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset wh STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_PAST :{BLACK}Last departure at {DATE_WALLCLOCK_TINY}. STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_FUTURE :{BLACK}Last departure has not left yet, it will depart at {DATE_WALLCLOCK_TINY}. STR_SCHDISPATCH_SUMMARY_L1 :{BLACK}This schedule requires {COMMA} vehicle{P "" s}. -STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}This schedule repeats every {STRING3}, began at {DATE_WALLCLOCK_TINY}, and ends at {DATE_WALLCLOCK_TINY}. -STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}Maximum delay of {STRING3} is allowed before the slot is skipped. +STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}This schedule repeats every {STRING8}. +STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}This schedule began at {DATE_WALLCLOCK_TINY}, and ends at {DATE_WALLCLOCK_TINY}. +STR_SCHDISPATCH_SUMMARY_L4 :{BLACK}Maximum delay of {STRING3} is allowed before the slot is skipped. STR_SCHDISPATCH_SUMMARY_NOT_ENABLED :{BLACK}This schedule is not active. STR_SCHDISPATCH_SLOT_OUTSIDE_SCHEDULE :{BLACK}One or more departure slots are outside the schedule duration. diff --git a/src/lang/german.txt b/src/lang/german.txt index e68dd6f2cd..e2fe5407b6 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -6819,8 +6819,9 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Setzt di STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_PAST :{BLACK}Letzte Abfahrt am {DATE_WALLCLOCK_TINY}. STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_FUTURE :{BLACK}Letzte Abfahrt hat den Bahnhof noch nicht verlassen; Abfahrt am {DATE_WALLCLOCK_TINY}. STR_SCHDISPATCH_SUMMARY_L1 :{BLACK}Dieser Fahrplan erfordert {COMMA} Fahrzeug{P "" e}. -STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}Dieser Fahrplan wiederholt sich alle {STRING} und begann am {DATE_WALLCLOCK_TINY} und endet am {DATE_WALLCLOCK_TINY}. -STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}Es ist eine maximale Verspätung von {STRING} erlaubt, ehe der Slot übersprungen wird. +STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}Dieser Fahrplan wiederholt sich alle {STRING}. +STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}Dieser Fahrplan begann am {DATE_WALLCLOCK_TINY} und endet am {DATE_WALLCLOCK_TINY}. +STR_SCHDISPATCH_SUMMARY_L4 :{BLACK}Es ist eine maximale Verspätung von {STRING} erlaubt, ehe der Slot übersprungen wird. STR_SCHDISPATCH_SUMMARY_NOT_ENABLED :{BLACK}Dieser Fahrplan ist nicht aktiv. STR_SCHDISPATCH_SLOT_OUTSIDE_SCHEDULE :{BLACK}Ein oder mehrere Abfahrtslots befinden sich außerhalb der geplanten Dauer. diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 4706a4f76c..6f8df148c3 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -7087,8 +7087,9 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}최근 STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_PAST :{BLACK}최근 출발: {DATE_WALLCLOCK_TINY} STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_FUTURE :{BLACK}최근 배차된 열차가 아직 출발하지 않았습니다. {DATE_WALLCLOCK_TINY}에 출발할 예정입니다. STR_SCHDISPATCH_SUMMARY_L1 :{BLACK}이 스케줄에는 {COMMA}대의 열차가 필요합니다. -STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}이 스케줄은 {STRING}마다 반복되고 {DATE_WALLCLOCK_TINY}에 시작되어서 {DATE_WALLCLOCK_TINY}에 끝납니다. -STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}{STRING} 이상 지연되면 다음 슬롯으로 넘어갑니다. +STR_SCHDISPATCH_SUMMARY_L2 :{BLACK}이 스케줄은 {STRING}마다 반복되고. +STR_SCHDISPATCH_SUMMARY_L3 :{BLACK}이 스케줄은 {DATE_WALLCLOCK_TINY}에 시작되어서 {DATE_WALLCLOCK_TINY}에 끝납니다. +STR_SCHDISPATCH_SUMMARY_L4 :{BLACK}{STRING} 이상 지연되면 다음 슬롯으로 넘어갑니다. STR_SCHDISPATCH_SUMMARY_NOT_ENABLED :{BLACK}이 스케줄은 비활성화되어 있습니다. STR_SCHDISPATCH_SLOT_OUTSIDE_SCHEDULE :{BLACK}하나 이상의 출발 슬롯이 배차 간격 범위 바깥에 있습니다. diff --git a/src/schdispatch_gui.cpp b/src/schdispatch_gui.cpp index 3b87b8a1f7..ad23a3eb9e 100644 --- a/src/schdispatch_gui.cpp +++ b/src/schdispatch_gui.cpp @@ -203,7 +203,7 @@ struct SchdispatchWindow : Window { } case WID_SCHDISPATCH_SUMMARY_PANEL: - size->height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; + size->height = WD_FRAMERECT_TOP + 5 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; if (warning_count > 0) { const Dimension warning_dimensions = GetSpriteSize(SPR_WARNING_SIGN); size->height += warning_count * std::max(warning_dimensions.height, FONT_HEIGHT_NORMAL); @@ -370,16 +370,19 @@ struct SchdispatchWindow : Window { } y += FONT_HEIGHT_NORMAL; - SetTimetableParams(0, v->orders.list->GetScheduledDispatchDuration()); - SetDParam(4, v->orders.list->GetScheduledDispatchStartTick()); - SetDParam(5, v->orders.list->GetScheduledDispatchStartTick() + v->orders.list->GetScheduledDispatchDuration()); + SetTimetableParams(0, v->orders.list->GetScheduledDispatchDuration(), true); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SCHDISPATCH_SUMMARY_L2); y += FONT_HEIGHT_NORMAL; - SetTimetableParams(0, v->orders.list->GetScheduledDispatchDelay()); + SetDParam(0, v->orders.list->GetScheduledDispatchStartTick()); + SetDParam(1, v->orders.list->GetScheduledDispatchStartTick() + v->orders.list->GetScheduledDispatchDuration()); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SCHDISPATCH_SUMMARY_L3); y += FONT_HEIGHT_NORMAL; + SetTimetableParams(0, v->orders.list->GetScheduledDispatchDelay()); + DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SCHDISPATCH_SUMMARY_L4); + y += FONT_HEIGHT_NORMAL; + uint warnings = 0; auto draw_warning = [&](StringID text) { const Dimension warning_dimensions = GetSpriteSize(SPR_WARNING_SIGN); diff --git a/src/timetable.h b/src/timetable.h index bc8ee90ee2..891b2573fd 100644 --- a/src/timetable.h +++ b/src/timetable.h @@ -17,7 +17,7 @@ void ShowTimetableWindow(const Vehicle *v); void UpdateVehicleTimetable(Vehicle *v, bool travelling); -void SetTimetableParams(int first_param, Ticks ticks); +void SetTimetableParams(int first_param, Ticks ticks, bool long_mode = false); struct TimetableProgress { VehicleID id; diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index 4bd0a5d7e5..51ecd7e7a4 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -43,8 +43,9 @@ struct TimetableArrivalDeparture { * Set the timetable parameters in the format as described by the setting. * @param param the first DParam to fill * @param ticks the number of ticks to 'draw' + * @param long_mode long output format */ -void SetTimetableParams(int first_param, Ticks ticks) +void SetTimetableParams(int first_param, Ticks ticks, bool long_mode) { if (_settings_client.gui.timetable_in_ticks) { SetDParam(first_param, STR_TIMETABLE_TICKS); @@ -54,6 +55,17 @@ void SetTimetableParams(int first_param, Ticks ticks) size_t ratio = DATE_UNIT_SIZE; size_t units = ticks / ratio; size_t leftover = ticks % ratio; + if (long_mode && _settings_time.time_in_minutes && units > 59) { + SetDParam(first_param, STR_TIMETABLE_MINUTES_LONG); + SetDParam(first_param + 1, units); + size_t hours = units / 60; + size_t minutes = units % 60; + SetDParam(first_param + 2, (minutes != 0) ? STR_TIMETABLE_HOURS_MINUTES : STR_TIMETABLE_HOURS); + SetDParam(first_param + 3, hours); + SetDParam(first_param + 4, minutes); + str = STR_EMPTY; + first_param += 5; + } if (leftover && _settings_client.gui.timetable_leftover_ticks) { SetDParam(first_param, STR_TIMETABLE_LEFTOVER_TICKS); SetDParam(first_param + 1, str);