mirror of https://github.com/OpenTTD/OpenTTD
(svn r18376) -Codechange: simplify setting the destination
parent
a1e28925e3
commit
1c65150d6d
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue