mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
(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:
parent
3091f97c41
commit
405ca1ea4d
5
rail.c
5
rail.c
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user