(svn r2539) * Fix: Mixed up use of trackdirs and directions in GetTileRailType() causes NPF to not consider routes under bridges.

This commit is contained in:
matthijs 2005-07-09 13:45:21 +00:00
parent 3091f97c41
commit 405ca1ea4d

5
rail.c
View File

@ -109,6 +109,7 @@ const Trackdir _reverse_trackdir[] = {
RailType GetTileRailType(TileIndex tile, Trackdir trackdir) RailType GetTileRailType(TileIndex tile, Trackdir trackdir)
{ {
RailType type = INVALID_RAILTYPE; RailType type = INVALID_RAILTYPE;
DiagDirection exitdir = TrackdirToExitdir(trackdir);
switch (GetTileType(tile)) { switch (GetTileType(tile)) {
case MP_RAILWAY: case MP_RAILWAY:
/* railway track */ /* railway track */
@ -129,10 +130,10 @@ RailType GetTileRailType(TileIndex tile, Trackdir trackdir)
/* railway bridge ending */ /* railway bridge ending */
if ((_map5[tile] & 0xC6) == 0x80) type = _map3_lo[tile] & RAILTYPE_MASK; if ((_map5[tile] & 0xC6) == 0x80) type = _map3_lo[tile] & RAILTYPE_MASK;
/* on railway bridge */ /* on railway bridge */
if ((_map5[tile] & 0xC6) == 0xC0 && ((DiagDirection)(_map5[tile] & 0x1)) == (TrackdirToExitdir(trackdir) & 0x1)) if ((_map5[tile] & 0xC6) == 0xC0 && ((DiagDirection)(_map5[tile] & 0x1)) == (exitdir & 0x1))
type = (_map3_lo[tile] >> 4) & RAILTYPE_MASK; type = (_map3_lo[tile] >> 4) & RAILTYPE_MASK;
/* under bridge (any type) */ /* under bridge (any type) */
if ((_map5[tile] & 0xC0) == 0xC0 && ((uint)_map5[tile] & 0x1) != (trackdir & 0x1)) if ((_map5[tile] & 0xC0) == 0xC0 && ((uint)_map5[tile] & 0x1) != (exitdir & 0x1))
type = _map3_lo[tile] & RAILTYPE_MASK; type = _map3_lo[tile] & RAILTYPE_MASK;
break; break;
default: default: