diff options
-rw-r--r-- | src/vehicle.cpp | 20 | ||||
-rw-r--r-- | src/vehicle_base.h | 2 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 2dd158329..ae520718b 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1736,6 +1736,18 @@ uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity) return capacity; } +/** + * Delete all automatic orders which were not reached. + */ +void Vehicle::DeleteUnreachedAutoOrders() +{ + const Order *order = this->GetOrder(this->cur_order_index); + while (order != NULL && order->IsType(OT_AUTOMATIC)) { + /* Delete order effectively deletes order, so get the next before deleting it. */ + order = order->next; + DeleteOrder(this, this->cur_order_index); + } +} void Vehicle::BeginLoading() { @@ -1743,13 +1755,7 @@ void Vehicle::BeginLoading() if (this->current_order.IsType(OT_GOTO_STATION) && this->current_order.GetDestination() == this->last_station_visited) { - /* Delete all automatic orders which were not reached */ - const Order *order = this->GetOrder(this->cur_order_index); - while (order != NULL && order->IsType(OT_AUTOMATIC)) { - /* Delete order effectively deletes order, so get the next before deleting it. */ - order = order->next; - DeleteOrder(this, this->cur_order_index); - } + this->DeleteUnreachedAutoOrders(); /* Now cur_order_index points to the destination station, and we can start loading */ this->current_order.MakeLoading(true); diff --git a/src/vehicle_base.h b/src/vehicle_base.h index 1e2ae6cf8..5ef98313a 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -243,6 +243,8 @@ public: GroundVehicleCache *GetGroundVehicleCache(); const GroundVehicleCache *GetGroundVehicleCache() const; + void DeleteUnreachedAutoOrders(); + /** * Handle the loading of the vehicle; when not it skips through dummy * orders and does nothing in all other cases. |