|
@@ -784,13 +784,13 @@ int32 GetRefitCost(EngineID engine_type)
|
|
|
|
|
|
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) ?
|
|
|
base_cost = 2 * ((RailVehInfo(engine_type)->railveh_type == RAILVEH_WAGON) ?
|
|
|
_price.build_railwagon : _price.build_railvehicle);
|
|
|
break;
|
|
|
default: NOT_REACHED(); break;
|
|
|
}
|
|
|
return (EngInfo(engine_type)->refit_cost * base_cost) >> 10;
|
|
|
}
|
|
@@ -2240,13 +2240,13 @@ static int32 MaybeReplaceVehicle(Vehicle
|
|
|
if (v->type == VEH_Train && p->renew_keep_length) {
|
|
|
Vehicle *temp;
|
|
|
w = v;
|
|
|
|
|
|
while (v->u.rail.cached_total_length > old_total_length) {
|
|
|
// the train is too long. We will remove cars one by one from the start of the train until it's short enough
|
|
|
while (w != NULL && !(RailVehInfo(w->engine_type)->flags&RVI_WAGON) ) {
|
|
|
while (w != NULL && RailVehInfo(w->engine_type)->railveh_type != RAILVEH_WAGON) {
|
|
|
w = GetNextVehicle(w);
|
|
|
}
|
|
|
if (w == NULL) {
|
|
|
// we failed to make the train short enough
|
|
|
SetDParam(0, v->unitnumber);
|
|
|
AddNewsItem(STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT, NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0), v->index, 0);
|
|
@@ -2847,13 +2847,13 @@ static SpriteID GetEngineColourMap(Engin
|
|
|
switch (rvi->railtype) {
|
|
|
default: NOT_REACHED();
|
|
|
case RAILTYPE_RAIL:
|
|
|
case RAILTYPE_ELECTRIC:
|
|
|
{
|
|
|
if (cargo_type == CT_INVALID) cargo_type = rvi->cargo_type;
|
|
|
if (rvi->flags & RVI_WAGON) {
|
|
|
if (rvi->railveh_type == RAILVEH_WAGON) {
|
|
|
if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL || cargo_type == CT_VALUABLES) {
|
|
|
if (parent_engine_type == INVALID_ENGINE) {
|
|
|
scheme = LS_PASSENGER_WAGON_STEAM;
|
|
|
} else {
|
|
|
switch (RailVehInfo(parent_engine_type)->engclass) {
|
|
|
case 0: scheme = LS_PASSENGER_WAGON_STEAM; break;
|