mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(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.
This commit is contained in:
parent
a6da8c9519
commit
a0a9a7f3cd
@ -331,11 +331,19 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
|
||||
|
||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
if (IsTunnel(tile)) {
|
||||
if (GetTunnelDirection(tile) != direction ||
|
||||
GetTunnelTransportType(tile) != tpf->tracktype) {
|
||||
if (GetTunnelTransportType(tile) != tpf->tracktype) {
|
||||
return;
|
||||
}
|
||||
/* 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;
|
||||
}
|
||||
tile = SkipToEndOfTunnel(tpf, tile, direction);
|
||||
} else {
|
||||
TileIndex tile_end;
|
||||
if (GetBridgeRampDirection(tile) != direction ||
|
||||
|
@ -416,7 +416,7 @@ static const Depot* FindClosestRoadDepot(const Vehicle* v)
|
||||
/* 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 {
|
||||
|
Loading…
Reference in New Issue
Block a user