Fix entering schdispatch delay/duration when not in minutes mode

This commit is contained in:
Jonathan G Rennison
2021-11-24 02:10:22 +00:00
parent 2308345803
commit dd5d4c795b
2 changed files with 25 additions and 18 deletions

View File

@@ -7048,16 +7048,18 @@ STR_SCHDISPATCH_ADD_TOOLTIP :{BLACK}Add new
STR_SCHDISPATCH_ADD_CAPTION :{BLACK}Departure slot STR_SCHDISPATCH_ADD_CAPTION :{BLACK}Departure slot
STR_SCHDISPATCH_DURATION :{BLACK}Duration STR_SCHDISPATCH_DURATION :{BLACK}Duration
STR_SCHDISPATCH_DURATION_TOOLTIP :{BLACK}Set duration of this schedule. STR_SCHDISPATCH_DURATION_TOOLTIP :{BLACK}Set duration of this schedule.
STR_SCHDISPATCH_DURATION_CAPTION_MINUTE :{BLACK}Duration (minute) STR_SCHDISPATCH_DURATION_CAPTION_MINUTE :{BLACK}Duration (minutes)
STR_SCHDISPATCH_DURATION_CAPTION_DAY :{BLACK}Duration (day) STR_SCHDISPATCH_DURATION_CAPTION_DAY :{BLACK}Duration (days)
STR_SCHDISPATCH_DURATION_CAPTION_TICKS :{BLACK}Duration (ticks)
STR_SCHDISPATCH_START :{BLACK}Start Date STR_SCHDISPATCH_START :{BLACK}Start Date
STR_SCHDISPATCH_SET_START :{BLACK}Set 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_TOOLTIP :{BLACK}Select a date to start this schedule.
STR_SCHDISPATCH_START_CAPTION_MINUTE :{BLACK}Start time (hhmm) STR_SCHDISPATCH_START_CAPTION_MINUTE :{BLACK}Start time (hhmm)
STR_SCHDISPATCH_DELAY :{BLACK}Delay STR_SCHDISPATCH_DELAY :{BLACK}Delay
STR_SCHDISPATCH_DELAY_TOOLTIP :{BLACK}Set maximum delay until a slot is skipped. 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_MINUTE :{BLACK}Delay (minutes)
STR_SCHDISPATCH_DELAY_CAPTION_DAY :{BLACK}Delay (day) 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 :{BLACK}Reset Last Dispatched
STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset when a vehicle was last dispatched from the schedule. STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset when a vehicle was last dispatched from the schedule.

View File

@@ -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 virtual void OnClick(Point pt, int widget, int click_count) override
{ {
const Vehicle *v = this->vehicle; const Vehicle *v = this->vehicle;
@@ -479,8 +492,8 @@ struct SchdispatchWindow : Window {
} }
case WID_SCHDISPATCH_SET_DURATION: { case WID_SCHDISPATCH_SET_DURATION: {
SetDParam(0, RoundDivSU(v->orders.list->GetScheduledDispatchDuration(), _settings_time.ticks_per_minute ? _settings_time.ticks_per_minute : DAY_TICKS)); SetDParam(0, ProcessDurationForQueryString(v->orders.list->GetScheduledDispatchDuration()));
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); ShowQueryString(STR_JUST_INT, STR_SCHDISPATCH_DURATION_CAPTION_MINUTE + this->GetQueryStringCaptionOffset(), 31, this, CS_NUMERAL, QSF_NONE);
break; break;
} }
@@ -500,8 +513,8 @@ struct SchdispatchWindow : Window {
} }
case WID_SCHDISPATCH_SET_DELAY: { case WID_SCHDISPATCH_SET_DELAY: {
SetDParam(0, RoundDivSU(v->orders.list->GetScheduledDispatchDelay(), _settings_time.ticks_per_minute ? _settings_time.ticks_per_minute : DAY_TICKS)); SetDParam(0, ProcessDurationForQueryString(v->orders.list->GetScheduledDispatchDelay()));
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); ShowQueryString(STR_JUST_INT, STR_SCHDISPATCH_DELAY_CAPTION_MINUTE + this->GetQueryStringCaptionOffset(), 31, this, CS_NUMERAL, QSF_NONE);
break; break;
} }
@@ -556,11 +569,7 @@ struct SchdispatchWindow : Window {
int32 val = StrEmpty(str) ? 0 : strtoul(str, nullptr, 10); int32 val = StrEmpty(str) ? 0 : strtoul(str, nullptr, 10);
if (val > 0) { if (val > 0) {
if (_settings_time.time_in_minutes) { if (!_settings_client.gui.timetable_in_ticks) val *= DATE_UNIT_SIZE;
val *= _settings_time.ticks_per_minute;
} else {
val *= DAY_TICKS;
}
DoCommandP(0, v->index, val, CMD_SCHEDULED_DISPATCH_SET_DURATION | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); 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); int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10);
if (val >= 0 && end && *end == 0) { if (val >= 0 && end && *end == 0) {
if (_settings_time.time_in_minutes) { if (!_settings_client.gui.timetable_in_ticks) val *= DATE_UNIT_SIZE;
val *= _settings_time.ticks_per_minute;
} else {
val *= DAY_TICKS;
}
DoCommandP(0, v->index, val, CMD_SCHEDULED_DISPATCH_SET_DELAY | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); DoCommandP(0, v->index, val, CMD_SCHEDULED_DISPATCH_SET_DELAY | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
} }