src/timetable_gui.cpp
changeset 9641 a854c7cf6af5
parent 9639 58530f2b5fdc
child 9665 dd6c07db9d32
equal deleted inserted replaced
9640:962f0d2aeed6 9641:a854c7cf6af5
    82 		int selected = this->sel_index;
    82 		int selected = this->sel_index;
    83 
    83 
    84 		SetVScrollCount(this, v->num_orders * 2);
    84 		SetVScrollCount(this, v->num_orders * 2);
    85 
    85 
    86 		if (v->owner == _local_player) {
    86 		if (v->owner == _local_player) {
    87 			if (selected == -1) {
    87 			bool disable = true;
    88 				this->DisableWidget(TTV_CHANGE_TIME);
    88 			if (selected != -1) {
    89 				this->DisableWidget(TTV_CLEAR_TIME);
       
    90 			} else if (selected % 2 == 1) {
       
    91 				this->EnableWidget(TTV_CHANGE_TIME);
       
    92 				this->EnableWidget(TTV_CLEAR_TIME);
       
    93 			} else {
       
    94 				const Order *order = GetVehicleOrder(v, (selected + 1) / 2);
    89 				const Order *order = GetVehicleOrder(v, (selected + 1) / 2);
    95 				bool disable = order == NULL || !order->IsType(OT_GOTO_STATION) || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION);
    90 				if (selected % 2 == 1) {
    96 
    91 					disable = order != NULL && order->IsType(OT_CONDITIONAL);
    97 				this->SetWidgetDisabledState(TTV_CHANGE_TIME, disable);
    92 				} else {
    98 				this->SetWidgetDisabledState(TTV_CLEAR_TIME, disable);
    93 					disable = order == NULL || ((!order->IsType(OT_GOTO_STATION) || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) && !order->IsType(OT_CONDITIONAL));
       
    94 				}
    99 			}
    95 			}
       
    96 
       
    97 			this->SetWidgetDisabledState(TTV_CHANGE_TIME, disable);
       
    98 			this->SetWidgetDisabledState(TTV_CLEAR_TIME, disable);
   100 
    99 
   101 			this->EnableWidget(TTV_RESET_LATENESS);
   100 			this->EnableWidget(TTV_RESET_LATENESS);
   102 			this->EnableWidget(TTV_AUTOFILL);
   101 			this->EnableWidget(TTV_AUTOFILL);
   103 		} else {
   102 		} else {
   104 			this->DisableWidget(TTV_CHANGE_TIME);
   103 			this->DisableWidget(TTV_CHANGE_TIME);
   135 					order = order->next;
   134 					order = order->next;
   136 				}
   135 				}
   137 			} else {
   136 			} else {
   138 				StringID string;
   137 				StringID string;
   139 
   138 
   140 				if (order->travel_time == 0) {
   139 				if (order->IsType(OT_CONDITIONAL)) {
       
   140 					string = STR_TIMETABLE_NO_TRAVEL;
       
   141 				} else if (order->travel_time == 0) {
   141 					string = STR_TIMETABLE_TRAVEL_NOT_TIMETABLED;
   142 					string = STR_TIMETABLE_TRAVEL_NOT_TIMETABLED;
   142 				} else {
   143 				} else {
   143 					SetTimetableParams(0, 1, order->travel_time);
   144 					SetTimetableParams(0, 1, order->travel_time);
   144 					string = STR_TIMETABLE_TRAVEL_FOR;
   145 					string = STR_TIMETABLE_TRAVEL_FOR;
   145 				}
   146 				}
   159 			uint total_time = 0;
   160 			uint total_time = 0;
   160 			bool complete = true;
   161 			bool complete = true;
   161 
   162 
   162 			for (const Order *order = GetVehicleOrder(v, 0); order != NULL; order = order->next) {
   163 			for (const Order *order = GetVehicleOrder(v, 0); order != NULL; order = order->next) {
   163 				total_time += order->travel_time + order->wait_time;
   164 				total_time += order->travel_time + order->wait_time;
   164 				if (order->travel_time == 0) complete = false;
   165 				if (order->travel_time == 0 && !order->IsType(OT_CONDITIONAL)) complete = false;
   165 				if (order->wait_time == 0 && order->IsType(OT_GOTO_STATION) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) complete = false;
   166 				if (order->wait_time == 0 && order->IsType(OT_GOTO_STATION) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) complete = false;
   166 			}
   167 			}
   167 
   168 
   168 			if (total_time != 0) {
   169 			if (total_time != 0) {
   169 				SetTimetableParams(0, 1, total_time);
   170 				SetTimetableParams(0, 1, total_time);