changeset 17002:9f83d76a6f12 draft

(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.
author frosch <frosch@openttd.org>
date Thu, 06 Jan 2011 22:27:56 +0000
parents cda70a6d42ea
children eefeb3bca2f3
files src/vehicle.cpp
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -1744,9 +1744,7 @@
 
 	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 @@
 			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 @@
 			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);