(svn r15263) -Codechange: added Engine::GetCost() to remove some code duplication.

This commit is contained in:
glx 2009-01-25 00:57:03 +00:00
parent 80ee3d3440
commit c1cf3934fa
11 changed files with 100 additions and 131 deletions

View File

@ -1529,7 +1529,7 @@
GetCapacity(): 40
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 795
GetPrice(): 79
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1544,7 +1544,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 733
GetPrice(): 73
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1559,7 +1559,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 566
GetPrice(): 56
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1574,7 +1574,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 643
GetPrice(): 64
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1589,7 +1589,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 618
GetPrice(): 61
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1604,7 +1604,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 611
GetPrice(): 60
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1619,7 +1619,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 585
GetPrice(): 58
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1634,7 +1634,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 582
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1649,7 +1649,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 576
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1664,7 +1664,7 @@
GetCapacity(): 20
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 630
GetPrice(): 62
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1679,7 +1679,7 @@
GetCapacity(): 20
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 820
GetPrice(): 81
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1979,7 +1979,7 @@
GetCapacity(): 45
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 795
GetPrice(): 79
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -1994,7 +1994,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 733
GetPrice(): 73
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2009,7 +2009,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 566
GetPrice(): 56
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2024,7 +2024,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 643
GetPrice(): 64
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2039,7 +2039,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 618
GetPrice(): 61
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2054,7 +2054,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 611
GetPrice(): 60
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2069,7 +2069,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 585
GetPrice(): 58
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2084,7 +2084,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 582
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2099,7 +2099,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 576
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2114,7 +2114,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 630
GetPrice(): 62
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2129,7 +2129,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 820
GetPrice(): 81
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2459,7 +2459,7 @@
GetCapacity(): 47
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 795
GetPrice(): 79
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2474,7 +2474,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 733
GetPrice(): 73
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2489,7 +2489,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 566
GetPrice(): 56
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2504,7 +2504,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 643
GetPrice(): 64
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2519,7 +2519,7 @@
GetCapacity(): 32
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 618
GetPrice(): 61
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2534,7 +2534,7 @@
GetCapacity(): 32
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 611
GetPrice(): 60
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2549,7 +2549,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 585
GetPrice(): 58
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2564,7 +2564,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 582
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2579,7 +2579,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 576
GetPrice(): 57
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2594,7 +2594,7 @@
GetCapacity(): 27
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 630
GetPrice(): 62
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0
@ -2609,7 +2609,7 @@
GetCapacity(): 27
GetReliability(): 0
GetMaxSpeed(): 0
GetPrice(): 820
GetPrice(): 81
GetMaxAge(): 7320
GetRunningCost(): 0
GetVehicleType(): 0

View File

@ -157,29 +157,7 @@
{
if (!IsValidEngine(engine_id)) return -1;
switch (::GetEngine(engine_id)->type) {
case VEH_ROAD: {
const RoadVehicleInfo *vi = ::RoadVehInfo(engine_id);
return (_price.roadveh_base >> 3) * vi->cost_factor >> 5;
} break;
case VEH_TRAIN: {
const RailVehicleInfo *vi = ::RailVehInfo(engine_id);
return (_price.build_railvehicle >> 3) * vi->cost_factor >> 5;
} break;
case VEH_SHIP: {
const ShipVehicleInfo *vi = ::ShipVehInfo(engine_id);
return (_price.ship_base >> 3) * vi->cost_factor >> 5;
} break;
case VEH_AIRCRAFT: {
const AircraftVehicleInfo *vi = ::AircraftVehInfo(engine_id);
return (_price.aircraft_base >> 3) * vi->cost_factor >> 5;
} break;
default: NOT_REACHED();
}
return ::GetEngine(engine_id)->GetCost();
}
/* static */ int32 AIEngine::GetMaxAge(EngineID engine_id)

View File

@ -113,29 +113,7 @@ int32 AIEventEnginePreview::GetMaxSpeed()
Money AIEventEnginePreview::GetPrice()
{
switch (::GetEngine(engine)->type) {
case VEH_ROAD: {
const RoadVehicleInfo *vi = ::RoadVehInfo(engine);
return (_price.roadveh_base >> 3) * vi->cost_factor >> 5;
} break;
case VEH_TRAIN: {
const RailVehicleInfo *vi = ::RailVehInfo(engine);
return (_price.build_railvehicle >> 3) * vi->cost_factor >> 5;
} break;
case VEH_SHIP: {
const ShipVehicleInfo *vi = ::ShipVehInfo(engine);
return (_price.ship_base >> 3) * vi->cost_factor >> 5;
} break;
case VEH_AIRCRAFT: {
const AircraftVehicleInfo *vi = ::AircraftVehInfo(engine);
return (_price.aircraft_base >> 3) * vi->cost_factor >> 5;
} break;
default: NOT_REACHED();
}
return ::GetEngine(engine)->GetCost();
}
Money AIEventEnginePreview::GetRunningCost()

View File

@ -223,12 +223,6 @@ void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height)
height = spr->height;
}
static CommandCost EstimateAircraftCost(EngineID engine, const AircraftVehicleInfo *avi)
{
return CommandCost(EXPENSES_NEW_VEHICLES, GetEngineProperty(engine, 0x0B, avi->cost_factor) * (_price.aircraft_base >> 3) >> 5);
}
/**
* Calculates cargo capacity based on an aircraft's passenger
* and mail capacities.
@ -266,7 +260,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
if (!IsEngineBuildable(p1, VEH_AIRCRAFT, _current_company)) return_cmd_error(STR_AIRCRAFT_NOT_AVAILABLE);
const AircraftVehicleInfo *avi = AircraftVehInfo(p1);
CommandCost value = EstimateAircraftCost(p1, avi);
const Engine *e = GetEngine(p1);
CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost());
/* to just query the cost, it is not neccessary to have a valid tile (automation/AI) */
if (flags & DC_QUERY_COST) return value;
@ -374,7 +369,6 @@ CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
u->cargo_cap = 0;
}
const Engine *e = GetEngine(p1);
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
v->max_age = e->lifelength * DAYS_IN_LEAP_YEAR;

View File

@ -482,8 +482,10 @@ static int DrawCargoCapacityInfo(int x, int y, EngineID engine, VehicleType type
/* Draw rail wagon specific details */
static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi)
{
const Engine *e = GetEngine(engine_number);
/* Purchase cost */
SetDParam(0, (GetEngineProperty(engine_number, 0x17, rvi->cost_factor) * _price.build_railwagon) >> 8);
SetDParam(0, e->GetCost());
DrawString(x, y, STR_PURCHASE_INFO_COST, TC_FROMSTRING);
y += 10;
@ -506,7 +508,7 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
/* Running cost */
if (rvi->running_cost_class != 0xFF) {
SetDParam(0, GetEngine(engine_number)->GetRunningCost());
SetDParam(0, e->GetRunningCost());
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
}
@ -519,9 +521,10 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
{
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0);
uint weight = GetEngineProperty(engine_number, 0x16, rvi->weight);
const Engine *e = GetEngine(engine_number);
/* Purchase Cost - Engine weight */
SetDParam(0, GetEngineProperty(engine_number, 0x17, rvi->cost_factor) * (_price.build_railvehicle >> 3) >> 5);
SetDParam(0, e->GetCost());
SetDParam(1, weight << multihead);
DrawString(x, y, STR_PURCHASE_INFO_COST_WEIGHT, TC_FROMSTRING);
y += 10;
@ -541,7 +544,7 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
/* Running cost */
if (rvi->running_cost_class != 0xFF) {
SetDParam(0, GetEngine(engine_number)->GetRunningCost());
SetDParam(0, e->GetRunningCost());
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
}
@ -560,14 +563,16 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
/* Draw road vehicle specific details */
static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const RoadVehicleInfo *rvi)
{
const Engine *e = GetEngine(engine_number);
/* Purchase cost - Max speed */
SetDParam(0, GetEngineProperty(engine_number, 0x11, rvi->cost_factor) * (_price.roadveh_base >> 3) >> 5);
SetDParam(0, e->GetCost());
SetDParam(1, rvi->max_speed * 10 / 32);
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, TC_FROMSTRING);
y += 10;
/* Running cost */
SetDParam(0, GetEngine(engine_number)->GetRunningCost());
SetDParam(0, e->GetRunningCost());
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
@ -578,8 +583,10 @@ static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const R
/* Draw ship specific details */
static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const ShipVehicleInfo *svi)
{
const Engine *e = GetEngine(engine_number);
/* Purchase cost - Max speed */
SetDParam(0, GetEngineProperty(engine_number, 0x0A, svi->cost_factor) * (_price.ship_base >> 3) >> 5);
SetDParam(0, e->GetCost());
SetDParam(1, GetEngineProperty(engine_number, 0x0B, svi->max_speed) * 10 / 32);
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, TC_FROMSTRING);
y += 10;
@ -592,7 +599,7 @@ static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const Ship
y += 10;
/* Running cost */
SetDParam(0, GetEngine(engine_number)->GetRunningCost());
SetDParam(0, e->GetRunningCost());
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;
@ -603,9 +610,10 @@ static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const Ship
static int DrawAircraftPurchaseInfo(int x, int y, EngineID engine_number, const AircraftVehicleInfo *avi)
{
CargoID cargo;
const Engine *e = GetEngine(engine_number);
/* Purchase cost - Max speed */
SetDParam(0, GetEngineProperty(engine_number, 0x0B, avi->cost_factor) * (_price.aircraft_base >> 3) >> 5);
SetDParam(0, e->GetCost());
SetDParam(1, avi->max_speed * 10 / 16);
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, TC_FROMSTRING);
y += 10;
@ -627,7 +635,7 @@ static int DrawAircraftPurchaseInfo(int x, int y, EngineID engine_number, const
y += 10;
/* Running cost */
SetDParam(0, GetEngine(engine_number)->GetRunningCost());
SetDParam(0, e->GetRunningCost());
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
y += 10;

View File

@ -137,6 +137,28 @@ Money Engine::GetRunningCost() const
}
}
Money Engine::GetCost() const
{
switch (this->type) {
case VEH_ROAD:
return GetEngineProperty(this->index, 0x11, this->u.road.cost_factor) * (_price.roadveh_base >> 3) >> 5;
case VEH_TRAIN:
if (this->u.rail.railveh_type == RAILVEH_WAGON) {
return (GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * _price.build_railwagon) >> 8;
} else {
return GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * (_price.build_railvehicle >> 3) >> 5;
}
case VEH_SHIP:
return GetEngineProperty(this->index, 0x0A, this->u.ship.cost_factor) * (_price.ship_base >> 3) >> 5;
case VEH_AIRCRAFT:
return GetEngineProperty(this->index, 0x0B, this->u.air.cost_factor) * (_price.aircraft_base >> 3) >> 5;
default: NOT_REACHED();
}
}
/** Sets cached values in Company::num_vehicles and Group::num_vehicles
*/
void SetCachedEngineCounts()

View File

@ -51,6 +51,7 @@ struct Engine : PoolItem<Engine, EngineID, &_Engine_pool> {
inline bool IsValid() const { return this->info.climates != 0; }
Money GetRunningCost() const;
Money GetCost() const;
};
static inline bool IsEngineIndex(uint index)

View File

@ -129,13 +129,14 @@ 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;
const Engine *e = GetEngine(engine);
SetDParam(0, (_price.build_railvehicle >> 3) * GetEngineProperty(engine, 0x17, rvi->cost_factor) >> 5);
SetDParam(0, e->GetCost());
SetDParam(2, GetEngineProperty(engine, 0x09, rvi->max_speed) * 10 / 16);
SetDParam(3, GetEngineProperty(engine, 0x0B, rvi->power));
SetDParam(1, GetEngineProperty(engine, 0x16, rvi->weight) << multihead);
SetDParam(4, GetEngine(engine)->GetRunningCost());
SetDParam(4, e->GetRunningCost());
uint capacity = GetTotalCapacityOfArticulatedParts(engine, VEH_TRAIN);
if (capacity != 0) {
@ -150,11 +151,13 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
{
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
SetDParam(0, (_price.aircraft_base >> 3) * GetEngineProperty(engine, 0x0B, avi->cost_factor) >> 5);
const Engine *e = GetEngine(engine);
SetDParam(0, e->GetCost());
SetDParam(1, avi->max_speed * 10 / 16);
SetDParam(2, avi->passenger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, GetEngine(engine)->GetRunningCost());
SetDParam(4, e->GetRunningCost());
DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
}
@ -162,10 +165,11 @@ static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
{
const RoadVehicleInfo *rvi = RoadVehInfo(engine);
const Engine *e = GetEngine(engine);
SetDParam(0, (_price.roadveh_base >> 3) * GetEngineProperty(engine, 0x11, rvi->cost_factor) >> 5);
SetDParam(0, e->GetCost());
SetDParam(1, rvi->max_speed * 10 / 32);
SetDParam(2, GetEngine(engine)->GetRunningCost());
SetDParam(2, e->GetRunningCost());
SetDParam(3, rvi->cargo_type);
SetDParam(4, GetTotalCapacityOfArticulatedParts(engine, VEH_ROAD));
@ -175,11 +179,13 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw)
{
const ShipVehicleInfo *svi = ShipVehInfo(engine);
SetDParam(0, GetEngineProperty(engine, 0x0A, svi->cost_factor) * (_price.ship_base >> 3) >> 5);
const Engine *e = GetEngine(engine);
SetDParam(0, e->GetCost());
SetDParam(1, GetEngineProperty(engine, 0x0B, svi->max_speed) * 10 / 32);
SetDParam(2, svi->cargo_type);
SetDParam(3, GetEngineProperty(engine, 0x0D, svi->capacity));
SetDParam(4, GetEngine(engine)->GetRunningCost());
SetDParam(4, e->GetRunningCost());
DrawStringMultiCenter(x, y, STR_982E_COST_MAX_SPEED_CAPACITY, maxw);
}

View File

@ -134,11 +134,6 @@ void DrawRoadVehEngine(int x, int y, EngineID engine, SpriteID pal)
DrawSprite(GetRoadVehIcon(engine), pal, x, y);
}
static CommandCost EstimateRoadVehCost(EngineID engine_type)
{
return CommandCost(EXPENSES_NEW_VEHICLES, ((_price.roadveh_base >> 3) * GetEngineProperty(engine_type, 0x11, RoadVehInfo(engine_type)->cost_factor)) >> 5);
}
byte GetRoadVehLength(const Vehicle *v)
{
byte length = 8;
@ -176,14 +171,13 @@ void RoadVehUpdateCache(Vehicle *v)
*/
CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, const char *text)
{
CommandCost cost;
Vehicle *v;
UnitID unit_num;
Engine *e;
if (!IsEngineBuildable(p1, VEH_ROAD, _current_company)) return_cmd_error(STR_ROAD_VEHICLE_NOT_AVAILABLE);
cost = EstimateRoadVehCost(p1);
const Engine *e = GetEngine(p1);
CommandCost cost(EXPENSES_NEW_VEHICLES, e->GetCost());
if (flags & DC_QUERY_COST) return cost;
/* The ai_new queries the vehicle cost before building the route,
@ -251,7 +245,6 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
v->max_speed = rvi->max_speed;
v->engine_type = (EngineID)p1;
e = GetEngine(p1);
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
v->max_age = e->lifelength * DAYS_IN_LEAP_YEAR;

View File

@ -341,11 +341,6 @@ static bool ShipAccelerate(Vehicle *v)
return (t < v->progress);
}
static CommandCost EstimateShipCost(EngineID engine_type)
{
return CommandCost(EXPENSES_NEW_VEHICLES, GetEngineProperty(engine_type, 0x0A, ShipVehInfo(engine_type)->cost_factor) * (_price.ship_base >> 3) >> 5);
}
static void ShipArrivesAt(const Vehicle *v, Station *st)
{
/* Check if station was ever visited before */
@ -746,13 +741,13 @@ void Ship::Tick()
*/
CommandCost CmdBuildShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, const char *text)
{
CommandCost value;
UnitID unit_num;
Engine *e;
if (!IsEngineBuildable(p1, VEH_SHIP, _current_company)) return_cmd_error(STR_SHIP_NOT_AVAILABLE);
value = EstimateShipCost(p1);
const Engine *e = GetEngine(p1);
CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost());
if (flags & DC_QUERY_COST) return value;
/* The ai_new queries the vehicle cost before building the route,
@ -797,7 +792,6 @@ CommandCost CmdBuildShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, con
v->max_speed = svi->max_speed;
v->engine_type = p1;
e = GetEngine(p1);
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
v->max_age = e->lifelength * DAYS_IN_LEAP_YEAR;

View File

@ -605,7 +605,7 @@ void DrawTrainEngine(int x, int y, EngineID engine, SpriteID pal)
static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, uint32 flags)
{
const RailVehicleInfo *rvi = RailVehInfo(engine);
CommandCost value(EXPENSES_NEW_VEHICLES, (GetEngineProperty(engine, 0x17, rvi->cost_factor) * _price.build_railwagon) >> 8);
CommandCost value(EXPENSES_NEW_VEHICLES, GetEngine(engine)->GetCost());
uint num_vehicles = 1 + CountArticulatedParts(engine, false);
@ -713,11 +713,6 @@ static void NormalizeTrainVehInDepot(const Vehicle *u)
}
}
static CommandCost EstimateTrainCost(EngineID engine, const RailVehicleInfo *rvi)
{
return CommandCost(EXPENSES_NEW_VEHICLES, GetEngineProperty(engine, 0x17, rvi->cost_factor) * (_price.build_railvehicle >> 3) >> 5);
}
static void AddRearEngineToMultiheadedTrain(Vehicle *v, Vehicle *u, bool building)
{
u = new (u) Train();
@ -768,7 +763,8 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
if (rvi->railveh_type == RAILVEH_WAGON) return CmdBuildRailWagon(p1, tile, flags);
CommandCost value = EstimateTrainCost(p1, rvi);
const Engine *e = GetEngine(p1);
CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost());
uint num_vehicles =
(rvi->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1) +
@ -820,7 +816,6 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
v->engine_type = p1;
const Engine *e = GetEngine(p1);
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
v->max_age = e->lifelength * DAYS_IN_LEAP_YEAR;