Changeset - r17295:2648861aae5f
[Not reviewed]
master
0 1 0
frosch - 13 years ago 2011-02-09 21:39:22
frosch@openttd.org
(svn r22045) -Codechange: Move cancelling the current loading order on deleting the current order to a separate function.
1 file changed with 16 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/order_cmd.cpp
Show inline comments
 
@@ -907,6 +907,21 @@ CommandCost CmdDeleteOrder(TileIndex til
 
}
 

	
 
/**
 
 * 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 @@ void DeleteOrder(Vehicle *v, VehicleOrde
 
	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) {
0 comments (0 inline, 0 general)