changeset 6282:5f3344ef3890 draft

(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.
author peter1138 <peter1138@openttd.org>
date Sat, 10 Mar 2007 10:08:38 +0000
parents 027018edadd1
children 2569f0875142
files src/newgrf.cpp
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -3752,6 +3752,9 @@
 static void CalculateRefitMasks()
 {
 	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 not_mask = 0;
 		uint32 xor_mask = _engine_info[engine].refit_mask;
@@ -3792,16 +3795,19 @@
 			case VEH_TRAIN: {
 				RailVehicleInfo *rvi = &_rail_vehicle_info[engine];
 				if (rvi->cargo_type == CT_INVALID) rvi->cargo_type = FindFirstRefittableCargo(engine);
+				if (rvi->cargo_type == CT_INVALID) _engine_info[engine].climates = 0;
 				break;
 			}
 			case VEH_ROAD: {
 				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) _engine_info[engine].climates = 0;
 				break;
 			}
 			case VEH_SHIP: {
 				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) _engine_info[engine].climates = 0;
 				break;
 			}
 		}