summaryrefslogtreecommitdiff
path: root/src/pathfind.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2008-01-23 20:02:30 +0000
committersmatz <smatz@openttd.org>2008-01-23 20:02:30 +0000
commitdbd4d7d6a8a4449cf1939752331a95c15ad276f9 (patch)
tree7c597878ff045b8f176d053332cb0371866f6767 /src/pathfind.cpp
parentc19fd4fcdea6bd33c525f5517d501eb7ca3e4562 (diff)
downloadopenttd-dbd4d7d6a8a4449cf1939752331a95c15ad276f9.tar.xz
(svn r11967) -Fix (r1400): MP_ROAD can have railbits too - OPF searching over rail of diffent owner behind crossing
Diffstat (limited to 'src/pathfind.cpp')
-rw-r--r--src/pathfind.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/pathfind.cpp b/src/pathfind.cpp
index 88700cfc3..5b1d1b69f 100644
--- a/src/pathfind.cpp
+++ b/src/pathfind.cpp
@@ -277,13 +277,6 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
/* can we enter tile in this dir? */
if (!CanAccessTileInDir(tile, ReverseDiagDir(direction), tpf->tracktype)) return;
- /* Check in case of rail if the owner is the same */
- if (tpf->tracktype == TRANSPORT_RAIL) {
- if (IsTileType(tile_org, MP_RAILWAY) || IsTileType(tile_org, MP_STATION) || IsTileType(tile_org, MP_TUNNELBRIDGE))
- if (IsTileType(tile, MP_RAILWAY) || IsTileType(tile, MP_STATION) || IsTileType(tile, MP_TUNNELBRIDGE))
- if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
- }
-
/* Check if the new tile is a tunnel or bridge head and that the direction
* and transport type match */
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
@@ -293,9 +286,16 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
}
}
- tpf->rd.cur_length++;
+ uint32 bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
- uint bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
+ /* Check in case of rail if the owner is the same */
+ if (tpf->tracktype == TRANSPORT_RAIL) {
+ if (bits != 0 && GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0) != 0) {
+ if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
+ }
+ }
+
+ tpf->rd.cur_length++;
if ((byte)bits != tpf->var2) {
bits &= _tpfmode1_and[direction];