summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pathfind.cpp14
-rw-r--r--src/roadveh_cmd.cpp2
2 files changed, 12 insertions, 4 deletions
diff --git a/src/pathfind.cpp b/src/pathfind.cpp
index 541fccb3c..60a3ac798 100644
--- a/src/pathfind.cpp
+++ b/src/pathfind.cpp
@@ -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 ||
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index ce219bda6..3ca03686a 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -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 {