Also show hours and minutes for schdispatch duration in minutes mode

pull/340/head
Jonathan G Rennison 3 years ago
parent a7094fec3b
commit b02b154218

@ -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.

@ -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.

@ -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}하나 이상의 출발 슬롯이 배차 간격 범위 바깥에 있습니다.

@ -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<int>(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);

@ -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;

@ -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);

Loading…
Cancel
Save