summaryrefslogtreecommitdiff
path: root/src/train_cmd.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-04-16 16:45:35 +0000
committerfrosch <frosch@openttd.org>2011-04-16 16:45:35 +0000
commit194a941a3740dd3d941d053712ea208ba331f5aa (patch)
treed438b72a036ba3bbf998274d37e5fb3a66d7c962 /src/train_cmd.cpp
parentaedd38255b2bc961d95a53cf784c3110711e05e3 (diff)
downloadopenttd-194a941a3740dd3d941d053712ea208ba331f5aa.tar.xz
(svn r22328) -Add: a flag to GroundVehicles to disable insertion and removal of automatic orders until the next real order is reached.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r--src/train_cmd.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 100b467ff..92ee36e30 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -2287,19 +2287,21 @@ static bool TryReserveSafeTrack(const Train *v, TileIndex tile, Trackdir td, boo
class VehicleOrderSaver
{
private:
- Vehicle *v;
+ Train *v;
Order old_order;
TileIndex old_dest_tile;
StationID old_last_station_visited;
VehicleOrderID index;
+ bool suppress_automatic_orders;
public:
- VehicleOrderSaver(Vehicle *_v) :
+ VehicleOrderSaver(Train *_v) :
v(_v),
old_order(_v->current_order),
old_dest_tile(_v->dest_tile),
old_last_station_visited(_v->last_station_visited),
- index(_v->cur_real_order_index)
+ index(_v->cur_real_order_index),
+ suppress_automatic_orders(HasBit(_v->gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS))
{
}
@@ -2308,6 +2310,7 @@ public:
this->v->current_order = this->old_order;
this->v->dest_tile = this->old_dest_tile;
this->v->last_station_visited = this->old_last_station_visited;
+ SB(this->v->gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS, 1, suppress_automatic_orders ? 1: 0);
}
/**
@@ -3767,6 +3770,7 @@ static void CheckIfTrainNeedsService(Train *v)
return;
}
+ SetBit(v->gv_flags, GVF_SUPPRESS_AUTOMATIC_ORDERS);
v->current_order.MakeGoToDepot(depot, ODTFB_SERVICE);
v->dest_tile = tfdd.tile;
SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);