From b916d20e1c7912ae3105499a1f652e4790e68596 Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 20 Dec 2008 15:30:18 +0000 Subject: (svn r14703) -Fix (r8735): [YAPF] YapfRoadVehDistanceToTile() shall not abort searching at v->dest_tile, when it in fact tries to reach another tile. --- src/yapf/yapf_road.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/yapf') diff --git a/src/yapf/yapf_road.cpp b/src/yapf/yapf_road.cpp index 55ace4a12..6186f1ac1 100644 --- a/src/yapf/yapf_road.cpp +++ b/src/yapf/yapf_road.cpp @@ -85,7 +85,7 @@ public: const Vehicle *v = Yapf().GetVehicle(); // we have reached the vehicle's destination - segment should end here to avoid target skipping - if (v->current_order.IsType(OT_GOTO_STATION) && tile == v->dest_tile) break; + if (Yapf().PfDetectDestinationTile(tile, trackdir)) break; // stop if we have just entered the depot if (IsRoadDepotTile(tile) && trackdir == DiagDirToDiagTrackdir(ReverseDiagDir(GetRoadDepotDirection(tile)))) { @@ -153,6 +153,11 @@ public: return bDest; } + FORCEINLINE bool PfDetectDestinationTile(TileIndex tile, Trackdir trackdir) + { + return IsRoadDepotTile(tile); + } + /** Called by YAPF to calculate cost estimate. Calculates distance to the destination * adds it to the actual cost from origin and stores the sum to the Node::m_estimate */ FORCEINLINE bool PfCalcEstimate(Node& n) @@ -195,6 +200,11 @@ public: return bDest; } + FORCEINLINE bool PfDetectDestinationTile(TileIndex tile, Trackdir trackdir) + { + return tile == m_destTile && ((m_destTrackdirs & TrackdirToTrackdirBits(trackdir)) != TRACKDIR_BIT_NONE); + } + /** Called by YAPF to calculate cost estimate. Calculates distance to the destination * adds it to the actual cost from origin and stores the sum to the Node::m_estimate */ inline bool PfCalcEstimate(Node& n) -- cgit v1.2.3-70-g09d2