diff --git a/src/lang/english.txt b/src/lang/english.txt index 3bc0a2e877..01bdb9e775 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -7048,16 +7048,18 @@ STR_SCHDISPATCH_ADD_TOOLTIP :{BLACK}Add new STR_SCHDISPATCH_ADD_CAPTION :{BLACK}Departure slot STR_SCHDISPATCH_DURATION :{BLACK}Duration STR_SCHDISPATCH_DURATION_TOOLTIP :{BLACK}Set duration of this schedule. -STR_SCHDISPATCH_DURATION_CAPTION_MINUTE :{BLACK}Duration (minute) -STR_SCHDISPATCH_DURATION_CAPTION_DAY :{BLACK}Duration (day) +STR_SCHDISPATCH_DURATION_CAPTION_MINUTE :{BLACK}Duration (minutes) +STR_SCHDISPATCH_DURATION_CAPTION_DAY :{BLACK}Duration (days) +STR_SCHDISPATCH_DURATION_CAPTION_TICKS :{BLACK}Duration (ticks) STR_SCHDISPATCH_START :{BLACK}Start Date STR_SCHDISPATCH_SET_START :{BLACK}Set Start Date STR_SCHDISPATCH_START_TOOLTIP :{BLACK}Select a date to start this schedule. STR_SCHDISPATCH_START_CAPTION_MINUTE :{BLACK}Start time (hhmm) STR_SCHDISPATCH_DELAY :{BLACK}Delay STR_SCHDISPATCH_DELAY_TOOLTIP :{BLACK}Set maximum delay until a slot is skipped. -STR_SCHDISPATCH_DELAY_CAPTION_MINUTE :{BLACK}Delay (minute) -STR_SCHDISPATCH_DELAY_CAPTION_DAY :{BLACK}Delay (day) +STR_SCHDISPATCH_DELAY_CAPTION_MINUTE :{BLACK}Delay (minutes) +STR_SCHDISPATCH_DELAY_CAPTION_DAY :{BLACK}Delay (days) +STR_SCHDISPATCH_DELAY_CAPTION_TICKS :{BLACK}Delay (ticks) STR_SCHDISPATCH_RESET_LAST_DISPATCH :{BLACK}Reset Last Dispatched STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset when a vehicle was last dispatched from the schedule. diff --git a/src/schdispatch_gui.cpp b/src/schdispatch_gui.cpp index 2fbc95cfb2..3b87b8a1f7 100644 --- a/src/schdispatch_gui.cpp +++ b/src/schdispatch_gui.cpp @@ -446,6 +446,19 @@ struct SchdispatchWindow : Window { } } + int32 ProcessDurationForQueryString(int32 duration) const + { + if (!_settings_client.gui.timetable_in_ticks) duration = RoundDivSU(duration, DATE_UNIT_SIZE); + return duration; + } + + int GetQueryStringCaptionOffset() const + { + if (_settings_client.gui.timetable_in_ticks) return 2; + if (_settings_time.time_in_minutes) return 0; + return 1; + } + virtual void OnClick(Point pt, int widget, int click_count) override { const Vehicle *v = this->vehicle; @@ -479,8 +492,8 @@ struct SchdispatchWindow : Window { } case WID_SCHDISPATCH_SET_DURATION: { - SetDParam(0, RoundDivSU(v->orders.list->GetScheduledDispatchDuration(), _settings_time.ticks_per_minute ? _settings_time.ticks_per_minute : DAY_TICKS)); - ShowQueryString(STR_JUST_INT, _settings_time.time_in_minutes ? STR_SCHDISPATCH_DURATION_CAPTION_MINUTE : STR_SCHDISPATCH_DURATION_CAPTION_DAY, 31, this, CS_NUMERAL, QSF_NONE); + SetDParam(0, ProcessDurationForQueryString(v->orders.list->GetScheduledDispatchDuration())); + ShowQueryString(STR_JUST_INT, STR_SCHDISPATCH_DURATION_CAPTION_MINUTE + this->GetQueryStringCaptionOffset(), 31, this, CS_NUMERAL, QSF_NONE); break; } @@ -500,8 +513,8 @@ struct SchdispatchWindow : Window { } case WID_SCHDISPATCH_SET_DELAY: { - SetDParam(0, RoundDivSU(v->orders.list->GetScheduledDispatchDelay(), _settings_time.ticks_per_minute ? _settings_time.ticks_per_minute : DAY_TICKS)); - ShowQueryString(STR_JUST_INT, _settings_time.time_in_minutes ? STR_SCHDISPATCH_DELAY_CAPTION_MINUTE : STR_SCHDISPATCH_DELAY_CAPTION_DAY, 31, this, CS_NUMERAL, QSF_NONE); + SetDParam(0, ProcessDurationForQueryString(v->orders.list->GetScheduledDispatchDelay())); + ShowQueryString(STR_JUST_INT, STR_SCHDISPATCH_DELAY_CAPTION_MINUTE + this->GetQueryStringCaptionOffset(), 31, this, CS_NUMERAL, QSF_NONE); break; } @@ -556,11 +569,7 @@ struct SchdispatchWindow : Window { int32 val = StrEmpty(str) ? 0 : strtoul(str, nullptr, 10); if (val > 0) { - if (_settings_time.time_in_minutes) { - val *= _settings_time.ticks_per_minute; - } else { - val *= DAY_TICKS; - } + if (!_settings_client.gui.timetable_in_ticks) val *= DATE_UNIT_SIZE; DoCommandP(0, v->index, val, CMD_SCHEDULED_DISPATCH_SET_DURATION | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); } @@ -572,11 +581,7 @@ struct SchdispatchWindow : Window { int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10); if (val >= 0 && end && *end == 0) { - if (_settings_time.time_in_minutes) { - val *= _settings_time.ticks_per_minute; - } else { - val *= DAY_TICKS; - } + if (!_settings_client.gui.timetable_in_ticks) val *= DATE_UNIT_SIZE; DoCommandP(0, v->index, val, CMD_SCHEDULED_DISPATCH_SET_DELAY | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); }