src/water_cmd.cpp
branchNewGRF_ports
changeset 10731 67db0d431d5e
parent 10724 68a692eacf22
child 10991 d8811e327d12
--- a/src/water_cmd.cpp	Mon May 26 20:45:25 2008 +0000
+++ b/src/water_cmd.cpp	Tue May 27 00:50:55 2008 +0000
@@ -738,7 +738,7 @@
 		default: assert(0); break;
 	}
 
-	td->owner = GetTileOwner(tile);
+	td->owner[0] = GetTileOwner(tile);
 }
 
 static void AnimateTile_Water(TileIndex tile)
@@ -774,7 +774,7 @@
 	}
 
 	/* if non-uniform stations are disabled, flood some train in this train station (if there is any) */
-	if (!_patches.nonuniform_stations && IsTileType(tile, MP_STATION) && GetStationType(tile) == STATION_RAIL) {
+	if (!_settings.station.nonuniform_stations && IsTileType(tile, MP_STATION) && GetStationType(tile) == STATION_RAIL) {
 		const Station *st = GetStationByTile(tile);
 
 		BEGIN_TILE_LOOP(t, st->trainst_w, st->trainst_h, st->train_tile)
@@ -823,39 +823,36 @@
 				//TODO: airport->delta_z no longer used. need to get actual height of individual tile in layout
 				//if (v->z_pos != airport->delta_z + 1) return;
 			}
-			Vehicle *u;
 
 			if (v->type != VEH_AIRCRAFT) v = v->First();
-			u = v;
 
 			/* crash all wagons, and count passengers */
-			BEGIN_ENUM_WAGONS(v)
-				if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) pass += v->cargo.Count();
-				v->vehstatus |= VS_CRASHED;
-				MarkSingleVehicleDirty(v);
-			END_ENUM_WAGONS(v)
-
-			v = u;
+			for (Vehicle *u = v; u != NULL; u = u->Next()) {
+				if (IsCargoInClass(u->cargo_type, CC_PASSENGERS)) pass += u->cargo.Count();
+				u->vehstatus |= VS_CRASHED;
+				MarkSingleVehicleDirty(u);
+			}
 
 			switch (v->type) {
 				default: NOT_REACHED();
 				case VEH_TRAIN:
 					if (IsFrontEngine(v)) pass += 4; // driver
 					v->u.rail.crash_anim_pos = 4000; // max 4440, disappear pretty fast
+					InvalidateWindowClassesData(WC_TRAINS_LIST, 0);
 					break;
 
 				case VEH_ROAD:
 					if (IsRoadVehFront(v)) pass += 1; // driver
 					v->u.road.crashed_ctr = 2000; // max 2220, disappear pretty fast
+					InvalidateWindowClassesData(WC_ROADVEH_LIST, 0);
 					break;
 
 				case VEH_AIRCRAFT:
 					pass += 2; // driver
 					v->u.air.crashed_counter = 9000; // max 10000, disappear pretty fast
+					InvalidateWindowClassesData(WC_AIRCRAFT_LIST, 0);
 					break;
 			}
-
-			RebuildVehicleLists();
 		} else {
 			return;
 		}