(svn r13591) -Codechange: Support CB36 in the vehicle offer window.
authorpeter1138
Fri, 20 Jun 2008 07:23:00 +0000
changeset 11035 e1ee65151624
parent 11034 ce1dfcf91337
child 11036 5e6aacb99732
(svn r13591) -Codechange: Support CB36 in the vehicle offer window.
src/engine_gui.cpp
--- a/src/engine_gui.cpp	Fri Jun 20 01:55:00 2008 +0000
+++ b/src/engine_gui.cpp	Fri Jun 20 07:23:00 2008 +0000
@@ -16,6 +16,7 @@
 #include "newgrf_engine.h"
 #include "strings_func.h"
 #include "engine_gui.h"
+#include "articulated_vehicles.h"
 
 #include "table/strings.h"
 #include "table/sprites.h"
@@ -117,21 +118,34 @@
 	AllocateWindowDescFront<EnginePreviewWindow>(&_engine_preview_desc, engine);
 }
 
+static uint GetTotalCapacityOfArticulatedParts(EngineID engine, VehicleType type)
+{
+	uint total = 0;
+
+	uint16 *cap = GetCapacityOfArticulatedParts(engine, type);
+	for (uint c = 0; c < NUM_CARGO; c++) {
+		total += cap[c];
+	}
+
+	return total;
+}
+
 static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
 {
 	const RailVehicleInfo *rvi = RailVehInfo(engine);
 	int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD) ? 1 : 0;
 
-	SetDParam(0, (_price.build_railvehicle >> 3) * rvi->base_cost >> 5);
-	SetDParam(2, rvi->max_speed * 10 / 16);
-	SetDParam(3, rvi->power << multihead);
-	SetDParam(1, rvi->weight << multihead);
+	SetDParam(0, (_price.build_railvehicle >> 3) * GetEngineProperty(engine, 0x17, rvi->base_cost) >> 5);
+	SetDParam(2, GetEngineProperty(engine, 0x09, rvi->max_speed) * 10 / 16);
+	SetDParam(3, GetEngineProperty(engine, 0x0B, rvi->power) << multihead);
+	SetDParam(1, GetEngineProperty(engine, 0x16, rvi->weight) << multihead);
 
-	SetDParam(4, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
+	SetDParam(4, GetEngineProperty(engine, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
 
-	if (rvi->capacity != 0) {
+	uint capacity = GetTotalCapacityOfArticulatedParts(engine, VEH_TRAIN);
+	if (capacity != 0) {
 		SetDParam(5, rvi->cargo_type);
-		SetDParam(6, rvi->capacity << multihead);
+		SetDParam(6, capacity << multihead);
 	} else {
 		SetDParam(5, CT_INVALID);
 	}
@@ -141,11 +155,11 @@
 static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
 {
 	const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
-	SetDParam(0, (_price.aircraft_base >> 3) * avi->base_cost >> 5);
+	SetDParam(0, (_price.aircraft_base >> 3) * GetEngineProperty(engine, 0x0B, avi->base_cost) >> 5);
 	SetDParam(1, avi->max_speed * 10 / 16);
 	SetDParam(2, avi->passenger_capacity);
 	SetDParam(3, avi->mail_capacity);
-	SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
+	SetDParam(4, GetEngineProperty(engine, 0x0E, avi->running_cost) * _price.aircraft_running >> 8);
 
 	DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
 }
@@ -154,11 +168,11 @@
 {
 	const RoadVehicleInfo *rvi = RoadVehInfo(engine);
 
-	SetDParam(0, (_price.roadveh_base >> 3) * rvi->base_cost >> 5);
+	SetDParam(0, (_price.roadveh_base >> 3) * GetEngineProperty(engine, 0x11, rvi->base_cost) >> 5);
 	SetDParam(1, rvi->max_speed * 10 / 32);
 	SetDParam(2, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
 	SetDParam(3, rvi->cargo_type);
-	SetDParam(4, rvi->capacity);
+	SetDParam(4, GetTotalCapacityOfArticulatedParts(engine, VEH_ROAD));
 
 	DrawStringMultiCenter(x, y, STR_902A_COST_SPEED_RUNNING_COST, maxw);
 }
@@ -166,11 +180,11 @@
 static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw)
 {
 	const ShipVehicleInfo *svi = ShipVehInfo(engine);
-	SetDParam(0, svi->base_cost * (_price.ship_base >> 3) >> 5);
-	SetDParam(1, svi->max_speed * 10 / 32);
+	SetDParam(0, GetEngineProperty(engine, 0x0A, svi->base_cost) * (_price.ship_base >> 3) >> 5);
+	SetDParam(1, GetEngineProperty(engine, 0x0B, svi->max_speed) * 10 / 32);
 	SetDParam(2, svi->cargo_type);
-	SetDParam(3, svi->capacity);
-	SetDParam(4, svi->running_cost * _price.ship_running >> 8);
+	SetDParam(3, GetEngineProperty(engine, 0x0D, svi->capacity));
+	SetDParam(4, GetEngineProperty(engine, 0x0F, svi->running_cost) * _price.ship_running >> 8);
 	DrawStringMultiCenter(x, y, STR_982E_COST_MAX_SPEED_CAPACITY, maxw);
 }