(svn r9094) -Codechange: Don't set up refit masks for engine types not in the current climate, and exclude engine types if their cargo type is invalid and they have no refittable type.

This commit is contained in:
peter1138
2007-03-10 10:08:38 +00:00
parent 1efd1adc97
commit 23e4a98dad

View File

@@ -3752,6 +3752,9 @@ static const CargoLabel *_default_refitmasks[] = {
static void CalculateRefitMasks() static void CalculateRefitMasks()
{ {
for (EngineID engine = 0; engine < TOTAL_NUM_ENGINES; engine++) { for (EngineID engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
/* Skip engine if not available in this climate */
if (!HASBIT(_engine_info[engine].climates, _opt.landscape)) continue;
uint32 mask = 0; uint32 mask = 0;
uint32 not_mask = 0; uint32 not_mask = 0;
uint32 xor_mask = _engine_info[engine].refit_mask; uint32 xor_mask = _engine_info[engine].refit_mask;
@@ -3792,16 +3795,19 @@ static void CalculateRefitMasks()
case VEH_TRAIN: { case VEH_TRAIN: {
RailVehicleInfo *rvi = &_rail_vehicle_info[engine]; RailVehicleInfo *rvi = &_rail_vehicle_info[engine];
if (rvi->cargo_type == CT_INVALID) rvi->cargo_type = FindFirstRefittableCargo(engine); if (rvi->cargo_type == CT_INVALID) rvi->cargo_type = FindFirstRefittableCargo(engine);
if (rvi->cargo_type == CT_INVALID) _engine_info[engine].climates = 0;
break; break;
} }
case VEH_ROAD: { case VEH_ROAD: {
RoadVehicleInfo *rvi = &_road_vehicle_info[engine - ROAD_ENGINES_INDEX]; RoadVehicleInfo *rvi = &_road_vehicle_info[engine - ROAD_ENGINES_INDEX];
if (rvi->cargo_type == CT_INVALID) rvi->cargo_type = FindFirstRefittableCargo(engine); if (rvi->cargo_type == CT_INVALID) rvi->cargo_type = FindFirstRefittableCargo(engine);
if (rvi->cargo_type == CT_INVALID) _engine_info[engine].climates = 0;
break; break;
} }
case VEH_SHIP: { case VEH_SHIP: {
ShipVehicleInfo *svi = &_ship_vehicle_info[engine - SHIP_ENGINES_INDEX]; ShipVehicleInfo *svi = &_ship_vehicle_info[engine - SHIP_ENGINES_INDEX];
if (svi->cargo_type == CT_INVALID) svi->cargo_type = FindFirstRefittableCargo(engine); if (svi->cargo_type == CT_INVALID) svi->cargo_type = FindFirstRefittableCargo(engine);
if (svi->cargo_type == CT_INVALID) _engine_info[engine].climates = 0;
break; break;
} }
} }