mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r6376) -Codechange: [vehicle refit] moved all refit cost calculations into GetRefitCost()
Now it's possible to tell refit costs for an EngineID without actually having build a vehicle
This commit is contained in:
parent
df135e8190
commit
1a0476535d
|
@ -625,7 +625,7 @@ int32 CmdRefitAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
|
||||
cost = 0;
|
||||
if (IS_HUMAN_PLAYER(v->owner) && new_cid != v->cargo_type) {
|
||||
cost = (EngInfo(v->engine_type)->refit_cost * _price.aircraft_base) >> 10;
|
||||
cost = GetRefitCost(v->engine_type);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
|
|
|
@ -1838,7 +1838,7 @@ int32 CmdRefitRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
|
||||
cost = 0;
|
||||
if (IS_HUMAN_PLAYER(v->owner) && new_cid != v->cargo_type) {
|
||||
cost = (EngInfo(v->engine_type)->refit_cost * _price.roadveh_base) >> 10;
|
||||
cost = GetRefitCost(v->engine_type);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
|
|
|
@ -1121,7 +1121,7 @@ int32 CmdRefitShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
|
||||
cost = 0;
|
||||
if (IS_HUMAN_PLAYER(v->owner) && new_cid != v->cargo_type) {
|
||||
cost = (EngInfo(v->engine_type)->refit_cost * _price.ship_base) >> 10;
|
||||
cost = GetRefitCost(v->engine_type);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
|
|
|
@ -1819,9 +1819,7 @@ int32 CmdRefitRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
|
||||
if (amount != 0) {
|
||||
if (new_cid != v->cargo_type) {
|
||||
int32 base_cost = (rvi->flags & RVI_WAGON) ?
|
||||
_price.build_railwagon : _price.build_railvehicle;
|
||||
cost += (EngInfo(v->engine_type)->refit_cost * base_cost) >> 9;
|
||||
cost += GetRefitCost(v->engine_type);
|
||||
}
|
||||
|
||||
num += amount;
|
||||
|
|
20
vehicle.c
20
vehicle.c
|
@ -723,6 +723,26 @@ CargoID FindFirstRefittableCargo(EngineID engine_type)
|
|||
return CT_INVALID;
|
||||
}
|
||||
|
||||
/** Learn the price of refitting a certain engine
|
||||
* @param engine Which engine to refit
|
||||
* @return Price for refitting
|
||||
*/
|
||||
int32 GetRefitCost(EngineID engine_type)
|
||||
{
|
||||
int32 base_cost;
|
||||
|
||||
switch (GetEngine(engine_type)->type) {
|
||||
case VEH_Ship: base_cost = _price.ship_base; break;
|
||||
case VEH_Road: base_cost = _price.roadveh_base; break;
|
||||
case VEH_Aircraft: base_cost = _price.aircraft_base; break;
|
||||
case VEH_Train:
|
||||
base_cost = 2 * ((RailVehInfo(engine_type)->flags & RVI_WAGON) ?
|
||||
_price.build_railwagon : _price.build_railvehicle);
|
||||
break;
|
||||
default: NOT_REACHED(); break;
|
||||
}
|
||||
return (EngInfo(engine_type)->refit_cost * base_cost) >> 10;
|
||||
}
|
||||
|
||||
static void DoDrawVehicle(const Vehicle *v)
|
||||
{
|
||||
|
|
|
@ -266,6 +266,7 @@ byte VehicleRandomBits(void);
|
|||
bool CanFillVehicle(Vehicle *v);
|
||||
bool CanRefitTo(EngineID engine_type, CargoID cid_to);
|
||||
CargoID FindFirstRefittableCargo(EngineID engine_type);
|
||||
int32 GetRefitCost(EngineID engine_type);
|
||||
|
||||
void ViewportAddVehicles(DrawPixelInfo *dpi);
|
||||
|
||||
|
|
Loading…
Reference in New Issue