summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-07-02 16:45:54 +0000
committerfrosch <frosch@openttd.org>2011-07-02 16:45:54 +0000
commit55a21a940d81b57b6c889a2839cb592690da404c (patch)
tree183bd9353e8cd51d8b99cc42e733941a22f4eb48
parent1bc1a42ea57c038df25f2e538bea77fa5451c30d (diff)
downloadopenttd-55a21a940d81b57b6c889a2839cb592690da404c.tar.xz
(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.
-rw-r--r--src/order_cmd.cpp8
-rw-r--r--src/order_gui.cpp3
2 files changed, 11 insertions, 0 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp
index dee910a8a..e8d1899fc 100644
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -1280,11 +1280,13 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
case DA_SERVICE:
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() | ODTFB_SERVICE));
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT));
+ order->SetRefit(CT_NO_REFIT);
break;
case DA_STOP:
order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE));
order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() | ODATFB_HALT));
+ order->SetRefit(CT_NO_REFIT);
break;
default:
@@ -1529,6 +1531,12 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (flags & DC_EXEC) {
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()) {
/* Update any possible open window of the vehicle */
InvalidateVehicleOrder(u, -2);
diff --git a/src/order_gui.cpp b/src/order_gui.cpp
index 8af15bb0b..1a16d0ded 100644
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -980,6 +980,9 @@ public:
this->EnableWidget(ORDER_WIDGET_NON_STOP);
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);
break;