From 709f0e4f8390bffce0a1a26c86c91e0e8cd9fa07 Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 16 Apr 2011 16:56:24 +0000 Subject: [PATCH] (svn r22329) -Change: When the current orders are interrupted for non-ordered service, disable modifications to automatic orders until the next real order is completed. (train part already slipped by in r22328) --- src/roadveh_cmd.cpp | 1 + src/vehicle.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 5ef0946c54..e255c68a16 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -1580,6 +1580,7 @@ static void CheckIfRoadVehNeedsService(RoadVehicle *v) return; } + SetBit(v->gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS); v->current_order.MakeGoToDepot(depot, ODTFB_SERVICE); v->dest_tile = rfdd.tile; SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH); diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 81880f3c36..66e8581072 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1986,6 +1986,11 @@ CommandCost Vehicle::SendToDepot(DoCommandFlag flags, DepotCommand command) * then skip to the next order; effectively cancelling this forced service */ if (this->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) this->IncrementRealOrderIndex(); + if (this->IsGroundVehicle()) { + uint16 &gv_flags = this->GetGroundVehicleFlags(); + SetBit(gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS); + } + this->current_order.MakeDummy(); SetWindowWidgetDirty(WC_VEHICLE_VIEW, this->index, VVW_WIDGET_START_STOP_VEH); } @@ -2001,6 +2006,11 @@ CommandCost Vehicle::SendToDepot(DoCommandFlag flags, DepotCommand command) if (flags & DC_EXEC) { if (this->current_order.IsType(OT_LOADING)) this->LeaveStation(); + if (this->IsGroundVehicle()) { + uint16 &gv_flags = this->GetGroundVehicleFlags(); + SetBit(gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS); + } + this->dest_tile = location; this->current_order.MakeGoToDepot(destination, ODTF_MANUAL); if (!(command & DEPOT_SERVICE)) this->current_order.SetDepotActionType(ODATFB_HALT);