diff options
author | rubidium <rubidium@openttd.org> | 2008-11-21 18:16:19 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-11-21 18:16:19 +0000 |
commit | 155a2ca1f4dea02c00910d7da97282ca764c5026 (patch) | |
tree | cecf0557a5f2388bd9f53d7a35143c6bf52b53ef /src | |
parent | ac66332b3c190fa69d1f4cf3f7a2a4a5e176d4a6 (diff) | |
download | openttd-155a2ca1f4dea02c00910d7da97282ca764c5026.tar.xz |
(svn r14601) -Fix: the nearest depot and stop in depot orders didn't work together (the vehicle didn't stop).
Diffstat (limited to 'src')
-rw-r--r-- | src/order_base.h | 3 | ||||
-rw-r--r-- | src/order_cmd.cpp | 6 |
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); |