diff options
author | frosch <frosch@openttd.org> | 2011-04-16 16:45:35 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2011-04-16 16:45:35 +0000 |
commit | 194a941a3740dd3d941d053712ea208ba331f5aa (patch) | |
tree | d438b72a036ba3bbf998274d37e5fb3a66d7c962 /src/train_cmd.cpp | |
parent | aedd38255b2bc961d95a53cf784c3110711e05e3 (diff) | |
download | openttd-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.cpp | 10 |
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); |