Fix #9669, cbe00ec: Only try valid reverse directions (#9672)

This commit is contained in:
Loïc Guilloux
2021-11-06 17:32:37 +01:00
committed by GitHub
parent 33ef34189e
commit 6ff0858b38
2 changed files with 12 additions and 3 deletions

View File

@@ -212,7 +212,13 @@ public:
/* create pathfinder instance */
Tpf pf;
/* set origin and destination nodes */
pf.SetOrigin(tile, trackdir == nullptr ? TrackdirToTrackdirBits(td1) | TrackdirToTrackdirBits(td2) : DiagdirReachesTrackdirs(ReverseDiagDir(VehicleExitDir(v->direction, v->state))));
if (trackdir == nullptr) {
pf.SetOrigin(tile, TrackdirToTrackdirBits(td1) | TrackdirToTrackdirBits(td2));
} else {
DiagDirection entry = ReverseDiagDir(VehicleExitDir(v->direction, v->state));
TrackdirBits rtds = DiagdirReachesTrackdirs(entry) & TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0, entry));
pf.SetOrigin(tile, rtds);
}
pf.SetDestination(v);
/* find best path */
if (!pf.FindPath(v)) return false;