From 6c8f12de78879e8adc8d4beea3e2f695c845d8f1 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sat, 30 Dec 2006 23:14:39 +0000 Subject: [PATCH] (svn r7670) -Backport from trunk (r7558, r7559): - [FS#464] do not wait till a crashed vehicle is removed before starting to load other vehicles (r7558). - [FS#456] clicking 'full load' can change depot order under certain circumstances (r7559). --- economy.c | 2 +- order_cmd.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/economy.c b/economy.c index 61dc1a20d2..9ced54475c 100644 --- a/economy.c +++ b/economy.c @@ -1272,7 +1272,7 @@ static bool LoadWait(const Vehicle* v, const Vehicle* u) FOR_ALL_VEHICLES(x) { if ((x->type != VEH_Train || IsFrontEngine(x)) && // for all locs u->last_station_visited == x->last_station_visited && // at the same station - !(x->vehstatus & VS_STOPPED) && // not stopped + !(x->vehstatus & (VS_STOPPED | VS_CRASHED)) && // not stopped or crashed x->current_order.type == OT_LOADING && // loading u != x) { // not itself bool other_has_any_cargo = false; diff --git a/order_cmd.c b/order_cmd.c index fe4511d779..4c318cb32c 100644 --- a/order_cmd.c +++ b/order_cmd.c @@ -611,8 +611,17 @@ int32 CmdModifyOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) u = GetFirstVehicleFromSharedList(v); DeleteOrderWarnings(u); for (; u != NULL; u = u->next_shared) { - /* toggle u->current_order "Full load" flag if it changed */ + /* Toggle u->current_order "Full load" flag if it changed. + * However, as the same flag is used for depot orders, check + * whether we are not going to a depot as there are three + * cases where the full load flag can be active and only + * one case where the flag is used for depot orders. In the + * other cases for the OrderType the flags are not used, + * so do not care and those orders should not be active + * when this function is called. + */ if (sel_ord == u->cur_order_index && + u->current_order.type != OT_GOTO_DEPOT && HASBIT(u->current_order.flags, OFB_FULL_LOAD) != HASBIT(order->flags, OFB_FULL_LOAD)) { TOGGLEBIT(u->current_order.flags, OFB_FULL_LOAD); }