summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-11-21 18:16:19 +0000
committerrubidium <rubidium@openttd.org>2008-11-21 18:16:19 +0000
commit2209c6a344328040757e84a38c36427ed214875a (patch)
treececf0557a5f2388bd9f53d7a35143c6bf52b53ef
parentbc88d7d9b06224efb2f44cab82b5ca2206f32239 (diff)
downloadopenttd-2209c6a344328040757e84a38c36427ed214875a.tar.xz
(svn r14601) -Fix: the nearest depot and stop in depot orders didn't work together (the vehicle didn't stop).
-rw-r--r--src/order_base.h3
-rw-r--r--src/order_cmd.cpp6
2 files changed, 5 insertions, 4 deletions
diff --git a/src/order_base.h b/src/order_base.h
index 39c6f1826..8462ec8e8 100644
--- a/src/order_base.h
+++ b/src/order_base.h
@@ -84,10 +84,11 @@ public:
* Makes this order a Go To Depot order.
* @param destination the depot to go to.
* @param order is this order a 'default' order, or an overriden vehicle order?
+ * @param action what to do in the depot?
* @param cargo the cargo type to change to.
* @param subtype the subtype to change to.
*/
- void MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, CargoID cargo = CT_NO_REFIT, byte subtype = 0);
+ void MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderDepotActionFlags action = ODATF_SERVICE_ONLY, CargoID cargo = CT_NO_REFIT, byte subtype = 0);
/**
* Makes this order a Go To Waypoint order.
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp
index f26b70b87..9d7f855ff 100644
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -57,11 +57,11 @@ void Order::MakeGoToStation(StationID destination)
this->dest = destination;
}
-void Order::MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, CargoID cargo, byte subtype)
+void Order::MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderDepotActionFlags action, CargoID cargo, byte subtype)
{
this->type = OT_GOTO_DEPOT;
- this->flags = 0;
this->SetDepotOrderType(order);
+ this->SetDepotActionType(action);
if (!(order & ODTFB_PART_OF_ORDERS)) {
this->SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
}
@@ -1623,7 +1623,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth)
if (v->FindClosestDepot(&location, &destination, &reverse)) {
v->dest_tile = location;
- v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), v->current_order.GetRefitCargo(), v->current_order.GetRefitSubtype());
+ v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), (OrderDepotActionFlags)(v->current_order.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT), v->current_order.GetRefitCargo(), v->current_order.GetRefitSubtype());
/* If there is no depot in front, reverse automatically (trains only) */
if (v->type == VEH_TRAIN && reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION);