From 89172eb054efaffbfaf6b2428a668fe4c44d4176 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Wed, 14 Feb 2007 20:17:11 +0000 Subject: [PATCH] (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. --- src/oldloader.cpp | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/oldloader.cpp b/src/oldloader.cpp index 21c9fcd745..0bf625ab92 100644 --- a/src/oldloader.cpp +++ b/src/oldloader.cpp @@ -1491,16 +1491,28 @@ static bool LoadOldMain(LoadgameState *ls) } 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; } }