summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-04-16 16:56:24 +0000
committerfrosch <frosch@openttd.org>2011-04-16 16:56:24 +0000
commit709f0e4f8390bffce0a1a26c86c91e0e8cd9fa07 (patch)
treeca4a5903184b3c2bd604a57e5af0bf071907b0e3
parent194a941a3740dd3d941d053712ea208ba331f5aa (diff)
downloadopenttd-709f0e4f8390bffce0a1a26c86c91e0e8cd9fa07.tar.xz
(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)
-rw-r--r--src/roadveh_cmd.cpp1
-rw-r--r--src/vehicle.cpp10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 5ef0946c5..e255c68a1 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 81880f3c3..66e858107 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);