diff options
author | truelight <truelight@openttd.org> | 2004-12-21 17:12:20 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2004-12-21 17:12:20 +0000 |
commit | 8ab0190c294b243b9544203a7cdaf6d3c40718d5 (patch) | |
tree | 6f629eeb3414c24d19e06bb50e11ec29f94cd59b | |
parent | 07d0fd6719cda6cf7e214dec3c7824ab7895f54a (diff) | |
download | openttd-8ab0190c294b243b9544203a7cdaf6d3c40718d5.tar.xz |
(svn r1203) -Fix: the pathfinder no longer sees rail with an other owner as a
possible route. This also makes sure signals don't show red because
there is a train on the track of an other owner.
-rw-r--r-- | pathfind.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/pathfind.c b/pathfind.c index 9c6e14c7f..6f68257a2 100644 --- a/pathfind.c +++ b/pathfind.c @@ -128,12 +128,19 @@ static void TPFMode2(TrackPathFinder *tpf, uint tile, int direction) uint bits; int i; RememberData rd; + byte owner; + + owner = _map_owner[tile]; // This addition will sometimes overflow by a single tile. // The use of TILE_MASK here makes sure that we still point at a valid // tile, and then this tile will be in the sentinel row/col, so GetTileTrackStatus will fail. tile = TILE_MASK(tile + _tileoffs_by_dir[direction]); + /* Check in case of rail if the owner is the same */ + if (tpf->tracktype == TRANSPORT_RAIL && _map_owner[tile] != owner) + return; + if (++tpf->rd.cur_length > 50) return; @@ -268,6 +275,11 @@ static void TPFMode1(TrackPathFinder *tpf, uint tile, int direction) tile = SkipToEndOfTunnel(tpf, tile, direction); } tile += _tileoffs_by_dir[direction]; + + /* Check in case of rail if the owner is the same */ + if (tpf->tracktype == TRANSPORT_RAIL && _map_owner[tile_org] != _map_owner[tile]) + return; + tpf->rd.cur_length++; bits = GetTileTrackStatus(tile, tpf->tracktype); |