changeset 6882:7a26a3a8edfe draft

(svn r10125) -Fix [FS#865]: under some circumstances the wagons of a train didn't get loaded properly.
author rubidium <rubidium@openttd.org>
date Tue, 12 Jun 2007 23:35:10 +0000
parents fa0dfd8e54c3
children bb3eb394463b
files src/economy.cpp
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -1395,9 +1395,11 @@
 		/* No cargo to unload */
 		if (v->cargo_cap == 0 || v->cargo_count == 0) continue;
 
-		SETBIT(v->vehicle_flags, VF_CARGO_UNLOADING);
 		/* All cargo has already been paid for, no need to pay again */
-		if (v->cargo_count == v->cargo_paid_for) continue;
+		if (v->cargo_count == v->cargo_paid_for) {
+			SETBIT(v->vehicle_flags, VF_CARGO_UNLOADING);
+			continue;
+		}
 
 		GoodsEntry *ge = &st->goods[v->cargo_type];
 
@@ -1416,6 +1418,8 @@
 
 			v->cargo_feeder_share = 0;   // clear transfer cost per vehicle
 			result |= 1;
+
+			SETBIT(v->vehicle_flags, VF_CARGO_UNLOADING);
 		} else if (front_v->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) {
 			if ((front_v->current_order.flags & OF_TRANSFER) != 0) {
 				virtual_profit = GetTransportedGoodsIncome(
@@ -1437,6 +1441,8 @@
 				v->cargo_paid_for = v->cargo_count;       // record how much of the cargo has been paid for to eliminate double counting
 			}
 			result |= 2;
+
+			SETBIT(v->vehicle_flags, VF_CARGO_UNLOADING);
 		}
 	}