changeset 6015:cdf8427f1411 draft

(svn r8738) -Fix: TTDP games have all tiles touching the water marked as MP_WATER, we do not (tiles with one corner, or steep tiles), so check and fix these tiles.
author Darkvater <Darkvater@openttd.org>
date Wed, 14 Feb 2007 20:17:11 +0000
parents cf2922a107cf
children ba0a051ec998
files src/oldloader.cpp
diffstat 1 files changed, 22 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/oldloader.cpp
+++ b/src/oldloader.cpp
@@ -1491,16 +1491,28 @@
 	}
 
 	for (i = 0; i < OLD_MAP_SIZE; i ++) {
-		if (IsTileType(i, MP_RAILWAY)) {
-			/* We save presignals different from TTDPatch, convert them */
-			if (GetRailTileType(i) == RAIL_TILE_SIGNALS) {
-				/* This byte is always zero in TTD for this type of tile */
-				if (_m[i].m4) /* Convert the presignals to our own format */
-					_m[i].m4 = (_m[i].m4 >> 1) & 7;
-			}
-			/* TTDPatch stores PBS things in L6 and all elsewhere; so we'll just
-			 * clear it for ourselves and let OTTD's rebuild PBS itself */
-			_m[i].m4 &= 0xF; /* Only keep the lower four bits; upper four is PBS */
+		switch (GetTileType(i)) {
+			case MP_RAILWAY:
+				/* We save presignals different from TTDPatch, convert them */
+				if (GetRailTileType(i) == RAIL_TILE_SIGNALS) {
+					/* This byte is always zero in TTD for this type of tile */
+					if (_m[i].m4) /* Convert the presignals to our own format */
+						_m[i].m4 = (_m[i].m4 >> 1) & 7;
+				}
+				/* TTDPatch stores PBS things in L6 and all elsewhere; so we'll just
+				 * clear it for ourselves and let OTTD's rebuild PBS itself */
+				_m[i].m4 &= 0xF; /* Only keep the lower four bits; upper four is PBS */
+				break;
+			case MP_WATER:
+				/* TTDPatch has all tiles touching water as coast (water)-type, we don't.
+				 * This is only true from a certain TTDP version, but there is no harm
+				 * in checking all the time */
+				Slope s = GetTileSlope(i, NULL);
+				if (s == SLOPE_ENW || s == SLOPE_NWS || s == SLOPE_SEN || s == SLOPE_WSE || IsSteepSlope(s)) {
+					SetTileType(i, MP_CLEAR);
+					SetTileOwner(i, OWNER_NONE);
+				}
+				break;
 		}
 	}