changeset 10612:ca4def8991c5 draft

(svn r14903) -Fix: First create all articulated parts of roadvehicles, then call callback 36 capacity, also call it for all articulated parts.
author frosch <frosch@openttd.org>
date Wed, 07 Jan 2009 17:50:20 +0000
parents 979ddadfaabf
children 5b28198cb216
files src/articulated_vehicles.cpp src/roadveh_cmd.cpp
diffstat 2 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -277,7 +277,7 @@
 
 				u->spritenum = rvi_artic->image_index;
 				u->cargo_type = rvi_artic->cargo_type;
-				u->cargo_cap = rvi_artic->capacity;
+				u->cargo_cap = rvi_artic->capacity;  // Callback 36 is called when the consist is finished
 
 				SetArticulatedPart(u);
 			} break;
@@ -296,7 +296,7 @@
 
 				u->spritenum = rvi_artic->image_index;
 				u->cargo_type = rvi_artic->cargo_type;
-				u->cargo_cap = rvi_artic->capacity;
+				u->cargo_cap = rvi_artic->capacity;  // Callback 36 is called when the consist is finished
 
 				SetRoadVehArticPart(u);
 			} break;
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -274,10 +274,15 @@
 		v->vehicle_flags = 0;
 		if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE);
 
-		v->cargo_cap = GetVehicleProperty(v, 0x0F, rvi->capacity);
+		v->cargo_cap = rvi->capacity;
 
 		AddArticulatedParts(vl, VEH_ROAD);
 
+		/* Call callback 36s after the whole consist has been constructed */
+		for (Vehicle *u = v; u != NULL; u = u->Next()) {
+			u->cargo_cap = GetVehicleProperty(u, 0x0F, u->cargo_cap);
+		}
+
 		VehiclePositionChanged(v);
 
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);