(svn r5240) - NewGRF: when there is more than one engine in a consist, base livery overrides and powered wagon weight/power on the last engine before the wagon.
authorpeter1138
Mon, 12 Jun 2006 11:38:07 +0000
changeset 4017 035aa73fb8d0
parent 4016 ee7635041a37
child 4018 a1722af2ba0b
(svn r5240) - NewGRF: when there is more than one engine in a consist, base livery overrides and powered wagon weight/power on the last engine before the wagon.
train_cmd.c
--- a/train_cmd.c	Sun Jun 11 21:38:35 2006 +0000
+++ b/train_cmd.c	Mon Jun 12 11:38:07 2006 +0000
@@ -59,7 +59,7 @@
 
 			// powered wagons have extra weight added
 			if (HASBIT(u->u.rail.flags, VRF_POWEREDWAGON))
-				vweight += RailVehInfo(v->engine_type)->pow_wag_weight;
+				vweight += RailVehInfo(u->u.rail.first_engine)->pow_wag_weight;
 		}
 
 		// consist weight is the sum of the weight of all vehicles in the consist
@@ -79,7 +79,6 @@
  */
 void TrainPowerChanged(Vehicle* v)
 {
-	const RailVehicleInfo *rvi_v = RailVehInfo(v->engine_type);
 	Vehicle* u;
 	uint32 power = 0;
 
@@ -106,7 +105,7 @@
 
 		if (engine_has_power) power += rvi_u->power;
 		if (HASBIT(u->u.rail.flags, VRF_POWEREDWAGON) && (wagon_has_power)) {
-			power += rvi_v->pow_wag_power;
+			power += RailVehInfo(u->u.rail.first_engine)->pow_wag_power;
 		}
 	}
 
@@ -149,6 +148,8 @@
 		u->u.rail.first_engine = (v == u) ? INVALID_ENGINE : first_engine;
 		u->u.rail.railtype = GetEngine(u->engine_type)->railtype;
 
+		if (IsTrainEngine(u)) first_engine = u->engine_type;
+
 		if (rvi_u->visual_effect != 0) {
 			u->u.rail.cached_vis_effect = rvi_u->visual_effect;
 		} else {