Changeset - r9567:b3592d86e408
[Not reviewed]
master
0 1 0
peter1138 - 16 years ago 2008-06-20 07:23:00
peter1138@openttd.org
(svn r13591) -Codechange: Support CB36 in the vehicle offer window.
1 file changed with 29 insertions and 15 deletions:
0 comments (0 inline, 0 general)
src/engine_gui.cpp
Show inline comments
 
@@ -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 @@ void ShowEnginePreviewWindow(EngineID en
 
	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 DrawTrainEngineInfo(EngineID
 
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 @@ static void DrawRoadVehEngineInfo(Engine
 
{
 
	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 DrawRoadVehEngineInfo(Engine
 
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);
 
}
 

	
0 comments (0 inline, 0 general)