changeset 17305:d18df78fbeef draft

(svn r22045) -Codechange: Move cancelling the current loading order on deleting the current order to a separate function.
author frosch <frosch@openttd.org>
date Wed, 09 Feb 2011 21:39:22 +0000
parents aea54f56915d
children 2ed9720f1bb1
files src/order_cmd.cpp
diffstat 1 files changed, 16 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -907,6 +907,21 @@
 }
 
 /**
+ * Cancel the current loading order of the vehicle as the order was deleted.
+ * @param v the vehicle
+ */
+static void CancelLoadingDueToDeletedOrder(Vehicle *v)
+{
+	assert(v->current_order.IsType(OT_LOADING));
+	/* NON-stop flag is misused to see if a train is in a station that is
+	 * on his order list or not */
+	v->current_order.SetNonStopType(ONSF_STOP_EVERYWHERE);
+	/* When full loading, "cancel" that order so the vehicle doesn't
+	 * stay indefinitely at this station anymore. */
+	if (v->current_order.GetLoadType() & OLFB_FULL_LOAD) v->current_order.SetLoadType(OLF_LOAD_IF_POSSIBLE);
+}
+
+/**
  * Delete an order but skip the parameter validation.
  * @param v       The vehicle to delete the order from.
  * @param sel_ord The id of the order to be deleted.
@@ -920,13 +935,8 @@
 	for (; u != NULL; u = u->NextShared()) {
 		assert(v->orders.list == u->orders.list);
 
-		/* NON-stop flag is misused to see if a train is in a station that is
-		 * on his order list or not */
 		if (sel_ord == u->cur_real_order_index && u->current_order.IsType(OT_LOADING)) {
-			u->current_order.SetNonStopType(ONSF_STOP_EVERYWHERE);
-			/* When full loading, "cancel" that order so the vehicle doesn't
-			 * stay indefinitely at this station anymore. */
-			if (u->current_order.GetLoadType() & OLFB_FULL_LOAD) u->current_order.SetLoadType(OLF_LOAD_IF_POSSIBLE);
+			CancelLoadingDueToDeletedOrder(u);
 		}
 
 		if (sel_ord < u->cur_real_order_index) {