--- 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;
}