1
0
Fork 0

(svn r18376) -Codechange: simplify setting the destination

release/1.0
rubidium 2009-12-02 14:44:32 +00:00
parent a1e28925e3
commit 1c65150d6d
1 changed files with 7 additions and 14 deletions

View File

@ -271,10 +271,10 @@ protected:
TrackdirBits m_destTrackdirs; TrackdirBits m_destTrackdirs;
public: public:
void SetDestination(TileIndex tile, TrackdirBits trackdirs) void SetDestination(const RoadVehicle *v)
{ {
m_destTile = tile; m_destTile = v->dest_tile;
m_destTrackdirs = trackdirs; m_destTrackdirs = TrackStatusToTrackdirBits(GetTileTrackStatus(v->dest_tile, TRANSPORT_ROAD, v->compatible_roadtypes));
} }
protected: protected:
@ -288,8 +288,7 @@ public:
/** Called by YAPF to detect if node ends in the desired destination */ /** Called by YAPF to detect if node ends in the desired destination */
FORCEINLINE bool PfDetectDestination(Node& n) FORCEINLINE bool PfDetectDestination(Node& n)
{ {
bool bDest = (n.m_segment_last_tile == m_destTile) && ((m_destTrackdirs & TrackdirToTrackdirBits(n.m_segment_last_td)) != TRACKDIR_BIT_NONE); return PfDetectDestinationTile(n.m_segment_last_tile, n.m_segment_last_td);
return bDest;
} }
FORCEINLINE bool PfDetectDestinationTile(TileIndex tile, Trackdir trackdir) FORCEINLINE bool PfDetectDestinationTile(TileIndex tile, Trackdir trackdir)
@ -382,13 +381,9 @@ public:
/* select reachable trackdirs only */ /* select reachable trackdirs only */
src_trackdirs &= DiagdirReachesTrackdirs(enterdir); src_trackdirs &= DiagdirReachesTrackdirs(enterdir);
/* get available trackdirs on the destination tile */
TileIndex dest_tile = v->dest_tile;
TrackdirBits dest_trackdirs = TrackStatusToTrackdirBits(GetTileTrackStatus(dest_tile, TRANSPORT_ROAD, v->compatible_roadtypes));
/* set origin and destination nodes */ /* set origin and destination nodes */
Yapf().SetOrigin(src_tile, src_trackdirs); Yapf().SetOrigin(src_tile, src_trackdirs);
Yapf().SetDestination(dest_tile, dest_trackdirs); Yapf().SetDestination(v);
/* find the best path */ /* find the best path */
Yapf().FindPath(v); Yapf().FindPath(v);
@ -426,10 +421,8 @@ public:
if (!SetOriginFromVehiclePos(v)) return UINT_MAX; if (!SetOriginFromVehiclePos(v)) return UINT_MAX;
/* set destination tile, trackdir /* get available trackdirs on the destination tile */
* get available trackdirs on the destination tile */ Yapf().SetDestination(v);
TrackdirBits dst_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(dst_tile, TRANSPORT_ROAD, v->compatible_roadtypes));
Yapf().SetDestination(dst_tile, dst_td_bits);
/* if path not found - return distance = UINT_MAX */ /* if path not found - return distance = UINT_MAX */
uint dist = UINT_MAX; uint dist = UINT_MAX;