mirror of https://github.com/OpenTTD/OpenTTD
(svn r22620) -Change [FS#4651]: Enforce refit orders to be 'always go to depot' orders; service-only and stop-in-depot orders make no sense with refitting.
parent
1bc1a42ea5
commit
55a21a940d
|
@ -1280,11 +1280,13 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||||
case DA_SERVICE:
|
case DA_SERVICE:
|
||||||
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() | ODTFB_SERVICE));
|
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() | ODTFB_SERVICE));
|
||||||
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT));
|
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT));
|
||||||
|
order->SetRefit(CT_NO_REFIT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DA_STOP:
|
case DA_STOP:
|
||||||
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE));
|
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE));
|
||||||
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() | ODATFB_HALT));
|
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() | ODATFB_HALT));
|
||||||
|
order->SetRefit(CT_NO_REFIT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1529,6 +1531,12 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
order->SetRefit(cargo, subtype);
|
order->SetRefit(cargo, subtype);
|
||||||
|
|
||||||
|
/* Make the depot order an 'always go' order. */
|
||||||
|
if (cargo != CT_NO_REFIT) {
|
||||||
|
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE));
|
||||||
|
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT));
|
||||||
|
}
|
||||||
|
|
||||||
for (Vehicle *u = v->FirstShared(); u != NULL; u = u->NextShared()) {
|
for (Vehicle *u = v->FirstShared(); u != NULL; u = u->NextShared()) {
|
||||||
/* Update any possible open window of the vehicle */
|
/* Update any possible open window of the vehicle */
|
||||||
InvalidateVehicleOrder(u, -2);
|
InvalidateVehicleOrder(u, -2);
|
||||||
|
|
|
@ -980,6 +980,9 @@ public:
|
||||||
this->EnableWidget(ORDER_WIDGET_NON_STOP);
|
this->EnableWidget(ORDER_WIDGET_NON_STOP);
|
||||||
this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
|
this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
|
||||||
}
|
}
|
||||||
|
/* Disable refit button if the order is no 'always go' order.
|
||||||
|
* However, keep the service button enabled for refit-orders to allow clearing refits (without knowing about ctrl). */
|
||||||
|
this->SetWidgetDisabledState(ORDER_WIDGET_REFIT, (order->GetDepotOrderType() & ODTFB_SERVICE) || (order->GetDepotActionType() & ODATFB_HALT));
|
||||||
this->SetWidgetLoweredState(ORDER_WIDGET_SERVICE, order->GetDepotOrderType() & ODTFB_SERVICE);
|
this->SetWidgetLoweredState(ORDER_WIDGET_SERVICE, order->GetDepotOrderType() & ODTFB_SERVICE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue