Fix entering schdispatch delay/duration when not in minutes mode

pull/340/head
Jonathan G Rennison 3 years ago
parent 2308345803
commit dd5d4c795b

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

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

Loading…
Cancel
Save