Mercurial > hg > openttd
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; } }