# HG changeset patch # User rubidium # Date 2011-01-15 18:14:29 # Node ID 2c02ec0aa11a3f6b69b173798dcba095e1065dfc # Parent dd74f9982768b614c4d93ea05ee85636bbabfd4c (svn r21807) -Codechange: split automatic order removal into a separate function (fonsinchen) diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1736,6 +1736,18 @@ uint GetVehicleCapacity(const Vehicle *v 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 --- 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.