From df1ba20403e666119cd44610ebcfe67a514c9241 Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Fri, 21 Apr 2023 18:36:06 -0400 Subject: [PATCH] Fix #10289: Don't silently fail when setting timetable start dates (#10690) --- src/lang/english.txt | 1 + src/timetable_cmd.cpp | 2 +- src/timetable_gui.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index cd17ce0cc5..f105d5861f 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5087,6 +5087,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... airc STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Can't timetable vehicle... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicles can only wait at stations STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}This vehicle is not stopping at this station +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... timetable is incomplete # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... too many signs diff --git a/src/timetable_cmd.cpp b/src/timetable_cmd.cpp index f800b25ae6..e43dee3022 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -288,7 +288,7 @@ CommandCost CmdSetTimetableStart(DoCommandFlag flags, VehicleID veh_id, bool tim if (start_date < 0 || start_date > MAX_DAY) return CMD_ERROR; if (start_date - _date > 15 * DAYS_IN_LEAP_YEAR) return CMD_ERROR; if (_date - start_date > DAYS_IN_LEAP_YEAR) return CMD_ERROR; - if (timetable_all && !v->orders->IsCompleteTimetable()) return CMD_ERROR; + if (timetable_all && !v->orders->IsCompleteTimetable()) return CommandCost(STR_ERROR_TIMETABLE_INCOMPLETE); if (timetable_all && start_date + total_duration / DAY_TICKS > MAX_DAY) return CMD_ERROR; if (flags & DC_EXEC) { diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index f6b1e3da93..27d2254e1f 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -530,7 +530,7 @@ struct TimetableWindow : Window { } case WID_VT_START_DATE: // Change the date that the timetable starts. - ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback, reinterpret_cast(static_cast(v->orders->IsCompleteTimetable() && _ctrl_pressed))); + ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback, reinterpret_cast(static_cast(_ctrl_pressed))); break; case WID_VT_CHANGE_TIME: { // "Wait For" button.