diff options
author | Darkvater <darkvater@openttd.org> | 2007-02-14 20:17:11 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2007-02-14 20:17:11 +0000 |
commit | 12868eeb9755c34d027962f76068cb2d1ad02681 (patch) | |
tree | 1b7058e63b76d121a1234f7e56a3def78c2477f3 | |
parent | c8fb4ddf573dd79722f54f2995fbaf49e7ca97ae (diff) | |
download | openttd-12868eeb9755c34d027962f76068cb2d1ad02681.tar.xz |
(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.
-rw-r--r-- | src/oldloader.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/oldloader.cpp b/src/oldloader.cpp index 21c9fcd74..0bf625ab9 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; } } |