changeset 19778:0bdaa4d2945e draft

(svn r24711) -Fix (r10354): Check whether to not display a ^ loading indicator at drop stations only worked if there was no other vehicle unloading for 255 ticks.
author frosch <frosch@openttd.org>
date Mon, 12 Nov 2012 20:12:26 +0000 (2012-11-12)
parents 36e812136341
children d87c77bb6629
files src/vehicle.cpp
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -1240,9 +1240,14 @@
 	int unloading = 0;
 	bool loading = false;
 
+	bool is_loading = front->current_order.IsType(OT_LOADING);
+
 	/* The station may be NULL when the (colour) string does not need to be set. */
 	const Station *st = Station::GetIfValid(front->last_station_visited);
-	assert(colour == NULL || st != NULL);
+	assert(colour == NULL || (st != NULL && is_loading));
+
+	bool order_no_load = is_loading && (front->current_order.GetLoadType() & OLFB_NO_LOAD);
+	bool order_full_load = is_loading && (front->current_order.GetLoadType() & OLFB_FULL_LOAD);
 
 	/* Count up max and used */
 	for (const Vehicle *v = front; v != NULL; v = v->Next()) {
@@ -1250,7 +1255,9 @@
 		max += v->cargo_cap;
 		if (v->cargo_cap != 0 && colour != NULL) {
 			unloading += HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0;
-			loading |= !(front->current_order.GetLoadType() & OLFB_NO_LOAD) && st->goods[v->cargo_type].days_since_pickup != 255;
+			loading |= !order_no_load &&
+					(order_full_load || HasBit(st->goods[v->cargo_type].acceptance_pickup, GoodsEntry::GES_PICKUP)) &&
+					!HasBit(v->vehicle_flags, VF_LOADING_FINISHED) && !HasBit(v->vehicle_flags, VF_STOP_LOADING);
 			cars++;
 		}
 	}