summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-01-06 22:27:56 +0000
committerfrosch <frosch@openttd.org>2011-01-06 22:27:56 +0000
commitbe106c77a9e1be3c3ac9bcf10911301e7fedc725 (patch)
treebb518aea277671dba37b854cdb6d71bc30ec1a4f
parent29a0dd65a944c1b5af6adbeedfcf5eca84d1a3f0 (diff)
downloadopenttd-be106c77a9e1be3c3ac9bcf10911301e7fedc725.tar.xz
(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.
-rw-r--r--src/vehicle.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 219ac872d..8777ea1be 100644
--- 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);