OpenTTD Source  20240919-master-gdf0233f4c2
CYapfFollowShipT< Types > Class Template Reference

Node Follower module of YAPF for ships. More...

Public Types

typedef Types::Tpf Tpf
 the pathfinder class (derived from THIS class).
 
typedef Types::TrackFollower TrackFollower
 
typedef Types::NodeList::Titem Node
 this will be our node type.
 
typedef Node::Key Key
 key to hash tables.
 

Public Member Functions

void PfFollowNode (Node &old_node)
 Called by YAPF to move from the given node to the next tile. More...
 
void RestrictSearch (const std::vector< WaterRegionPatchDesc > &path)
 Restricts the search by creating corridor or water regions through which the ship is allowed to travel.
 
char TransportTypeChar () const
 Return debug report character to identify the transportation type.
 

Static Public Member Functions

static Trackdir GetRandomTrackdir (TrackdirBits trackdirs)
 Returns a random trackdir out of a set of trackdirs.
 
static std::pair< TileIndex, TrackdirGetRandomFollowUpTileTrackdir (const Ship *v, TileIndex tile, Trackdir dir)
 Returns a random tile/trackdir that can be reached from the current tile/trackdir, or tile/INVALID_TRACK if none is available.
 
static Trackdir CreateRandomPath (const Ship *v, ShipPathCache &path_cache, int path_length)
 Creates a random path, avoids 90 degree turns.
 
static Trackdir ChooseShipTrack (const Ship *v, TileIndex tile, TrackdirBits forward_dirs, TrackdirBits reverse_dirs, bool &path_found, ShipPathCache &path_cache, Trackdir &best_origin_dir)
 
static bool CheckShipReverse (const Ship *v, Trackdir *trackdir)
 Check whether a ship should reverse to reach its destination. More...
 

Protected Member Functions

TpfYapf ()
 to access inherited path finder
 

Protected Attributes

std::vector< WaterRegionDescm_water_region_corridor
 

Detailed Description

template<class Types>
class CYapfFollowShipT< Types >

Node Follower module of YAPF for ships.

Definition at line 127 of file yapf_ship.cpp.

Member Function Documentation

◆ CheckShipReverse()

template<class Types >
static bool CYapfFollowShipT< Types >::CheckShipReverse ( const Ship v,
Trackdir trackdir 
)
inlinestatic

Check whether a ship should reverse to reach its destination.

Called when leaving depot.

Parameters
vShip.
trackdir[out] the best of all possible reversed trackdirs.
Returns
true if the reverse direction is better.

Definition at line 301 of file yapf_ship.cpp.

References DiagdirReachesTrackdirs(), Vehicle::direction, CYapfFollowShipT< Types >::GetRandomTrackdir(), GetTileTrackStatus(), Ship::GetVehicleTrackdir(), INVALID_TRACKDIR, ReverseDiagDir(), ReverseTrackdir(), Ship::state, Vehicle::tile, TRACKDIR_BIT_NONE, TrackdirToTrackdirBits(), TrackStatusToTrackdirBits(), TRANSPORT_WATER, and VehicleExitDir().

◆ PfFollowNode()

template<class Types >
void CYapfFollowShipT< Types >::PfFollowNode ( Node old_node)
inline

Called by YAPF to move from the given node to the next tile.

For each reachable trackdir on the new tile creates new node, initializes it and adds it to the open list by calling Yapf().AddNewNode(n)

Definition at line 150 of file yapf_ship.cpp.


The documentation for this class was generated from the following file: