# HG changeset patch # User frosch # Date 2011-01-06 22:27:56 # Node ID 6ce9cb0c911c4575facc9488ed38812c420b344f # Parent bb053a16bbe88b059a6d11d288f5abb9647c9fb3 (svn r21738) -Fix (r21642)[FS#4384]: Start loading when cur_order_index points to the destination station, i.e. after deleting not-reached automatic orders. diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1744,9 +1744,7 @@ void Vehicle::BeginLoading() if (this->current_order.IsType(OT_GOTO_STATION) && this->current_order.GetDestination() == this->last_station_visited) { - current_order.MakeLoading(true); - UpdateVehicleTimetable(this, true); - + /* 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. */ @@ -1754,6 +1752,10 @@ void Vehicle::BeginLoading() DeleteOrder(this, this->cur_order_index); } + /* Now cur_order_index points to the destination station, and we can start loading */ + this->current_order.MakeLoading(true); + UpdateVehicleTimetable(this, true); + /* Furthermore add the Non Stop flag to mark that this station * is the actual destination of the vehicle, which is (for example) * necessary to be known for HandleTrainLoading to determine @@ -1774,7 +1776,7 @@ void Vehicle::BeginLoading() InsertOrder(this, auto_order, this->cur_order_index); if (this->cur_order_index > 0) --this->cur_order_index; } - current_order.MakeLoading(false); + this->current_order.MakeLoading(false); } Station::Get(this->last_station_visited)->loading_vehicles.push_back(this);