Changeset - r27129:34481b1f4b53
[Not reviewed]
master
0 3 0
Tyler Trahan - 14 months ago 2023-04-21 22:36:06
tyler@tylertrahan.com
Fix #10289: Don't silently fail when setting timetable start dates (#10690)
3 files changed with 3 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/lang/english.txt
Show inline comments
 
@@ -5107,12 +5107,13 @@ STR_ERROR_NO_RAIL_WAYPOINT              
 
STR_ERROR_NO_BUOY                                               :{WHITE}There is no buoy
 

	
 
# Timetable related errors
 
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
 
STR_ERROR_CAN_T_PLACE_SIGN_HERE                                 :{WHITE}Can't place sign here...
 
STR_ERROR_CAN_T_CHANGE_SIGN_NAME                                :{WHITE}Can't change sign name...
 
STR_ERROR_CAN_T_DELETE_SIGN                                     :{WHITE}Can't delete sign...
src/timetable_cmd.cpp
Show inline comments
 
@@ -303,13 +303,13 @@ CommandCost CmdSetTimetableStart(DoComma
 
	int total_duration = v->orders->GetTimetableTotalDuration();
 

	
 
	/* Don't let a timetable start more than 15 years into the future or 1 year in the past. */
 
	if (start_date < 0 || start_date > MAX_DAY) return CMD_ERROR;
 
	if (start_date - _date > MAX_TIMETABLE_START_YEARS * 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) {
 
		std::vector<Vehicle *> vehs;
 

	
 
		if (timetable_all) {
src/timetable_gui.cpp
Show inline comments
 
@@ -569,13 +569,13 @@ struct TimetableWindow : Window {
 
				this->CloseChildWindows();
 
				this->sel_index = (selected == INVALID_ORDER || selected == this->sel_index) ? -1 : selected;
 
				break;
 
			}
 

	
 
			case WID_VT_START_DATE: // Change the date that the timetable starts.
 
				ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + MAX_TIMETABLE_START_YEARS, ChangeTimetableStartCallback, reinterpret_cast<void *>(static_cast<uintptr_t>(v->orders->IsCompleteTimetable() && _ctrl_pressed)));
 
				ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + MAX_TIMETABLE_START_YEARS, ChangeTimetableStartCallback, reinterpret_cast<void *>(static_cast<uintptr_t>(_ctrl_pressed)));
 
				break;
 

	
 
			case WID_VT_CHANGE_TIME: { // "Wait For" button.
 
				this->query_widget = WID_VT_CHANGE_TIME;
 
				int selected = this->sel_index;
 
				VehicleOrderID real = (selected + 1) / 2;
0 comments (0 inline, 0 general)