# HG changeset patch # User Darkvater # Date 1171484231 0 # Node ID 210486c21833c68de3e65c524e8bd10ee7e8d379 # Parent cd30e198dfa6088e101fba123859efd5f21e2640 (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. diff -r cd30e198dfa6 -r 210486c21833 src/oldloader.cpp --- a/src/oldloader.cpp Wed Feb 14 20:10:52 2007 +0000 +++ b/src/oldloader.cpp Wed Feb 14 20:17:11 2007 +0000 @@ -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; } }