From 3a787f5a0b83c1bac9680a80b657601ce2d3bf5b Mon Sep 17 00:00:00 2001 From: frosch Date: Wed, 9 Feb 2011 21:39:22 +0000 Subject: (svn r22045) -Codechange: Move cancelling the current loading order on deleting the current order to a separate function. --- src/order_cmd.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 4f97c782b..aa0f0eacc 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -906,6 +906,21 @@ CommandCost CmdDeleteOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 return CommandCost(); } +/** + * 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. @@ -920,13 +935,8 @@ void DeleteOrder(Vehicle *v, VehicleOrderID sel_ord) 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) { -- cgit v1.2.3-54-g00ecf