Mercurial > hg > openttd
changeset 7080:f34aa0966c89 draft
(svn r10345) -Fix [FS#290]: Make OPF handle coming out of a tunnel as well as going into a tunnel, to support road vehicles looking back when finding a depot while in a tunnel.
-Fix [FS#290]: Make NPF look back when finding a depot for road vehicles.
author | matthijs <matthijs@openttd.org> |
---|---|
date | Tue, 26 Jun 2007 20:15:33 +0000 |
parents | 85d64732a312 |
children | c2a6582d7eed |
files | src/pathfind.cpp src/roadveh_cmd.cpp |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/pathfind.cpp +++ b/src/pathfind.cpp @@ -331,11 +331,19 @@ if (IsTileType(tile, MP_TUNNELBRIDGE)) { if (IsTunnel(tile)) { - if (GetTunnelDirection(tile) != direction || - GetTunnelTransportType(tile) != tpf->tracktype) { + if (GetTunnelTransportType(tile) != tpf->tracktype) { return; } - tile = SkipToEndOfTunnel(tpf, tile, direction); + /* Only skip through the tunnel if heading inwards. We can + * be headed outwards if our starting position was in a + * tunnel and we're pathfinding backwards */ + if (GetTunnelDirection(tile) == direction) { + tile = SkipToEndOfTunnel(tpf, tile, direction); + } if (GetTunnelDirection(tile) != ReverseDiagDir(direction)) { + /* We don't support moving through the sides of a tunnel + * entrance :-) */ + return; + } } else { TileIndex tile_end; if (GetBridgeRampDirection(tile) != direction ||
--- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -416,7 +416,7 @@ /* See where we are now */ Trackdir trackdir = GetVehicleTrackdir(v); - ftd = NPFRouteToDepotBreadthFirst(v->tile, trackdir, TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE); + ftd = NPFRouteToDepotBreadthFirstTwoWay(v->tile, trackdir, v->tile, ReverseTrackdir(trackdir), TRANSPORT_ROAD, v->u.road.compatible_roadtypes, v->owner, INVALID_RAILTYPE, 0); if (ftd.best_bird_dist == 0) { return GetDepotByTile(ftd.node.tile); /* Target found */ } else {