summaryrefslogtreecommitdiff
path: root/pathfind.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-12-21 17:12:20 +0000
committertruelight <truelight@openttd.org>2004-12-21 17:12:20 +0000
commit8ab0190c294b243b9544203a7cdaf6d3c40718d5 (patch)
tree6f629eeb3414c24d19e06bb50e11ec29f94cd59b /pathfind.c
parent07d0fd6719cda6cf7e214dec3c7824ab7895f54a (diff)
downloadopenttd-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.
Diffstat (limited to 'pathfind.c')
-rw-r--r--pathfind.c12
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);