OpenTTD Source: CYapfFollowShipT< Types > Class Template Reference

OpenTTD Source 15.3

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
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::Item | 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.
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, Trackdir > | GetRandomFollowUpTileTrackdir (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.

## Protected Member Functions
Tpf & | Yapf ()
| to access inherited path finder

## Protected Attributes
std::vector< WaterRegionDesc > | water_region_corridor

## Detailed Description

template<class Types>
class CYapfFollowShipT< Types >

Node Follower module of YAPF for ships.

Definition at line 112 of file yapf_ship.cpp.

## Member Typedef Documentation

## ◆ Key

template<class Types >

typedef Node::Key CYapfFollowShipT< Types >::Key

key to hash tables.

Definition at line 117 of file yapf_ship.cpp.

## ◆ Node

template<class Types >

typedef Types::NodeList::Item CYapfFollowShipT< Types >::Node

this will be our node type.

Definition at line 116 of file yapf_ship.cpp.

## ◆ Tpf

template<class Types >

typedef Types::Tpf CYapfFollowShipT< Types >::Tpf

the pathfinder class (derived from THIS class).

Definition at line 114 of file yapf_ship.cpp.

## ◆ TrackFollower

template<class Types >

typedef Types::TrackFollower CYapfFollowShipT< Types >::TrackFollower

Definition at line 115 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

  v | Ship.
  trackdir | [out] the best of all possible reversed trackdirs.

Returns
  true if the reverse direction is better.

Definition at line 287 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().

## ◆ ChooseShipTrack()

template<class Types >

static Trackdir CYapfFollowShipT< Types >::ChooseShipTrack | ( | const Ship * | v,
|  | TileIndex | tile,
|  | TrackdirBits | forward_dirs,
|  | TrackdirBits | reverse_dirs,
|  | bool & | path_found,
|  | ShipPathCache & | path_cache,
|  | Trackdir & | best_origin_dir
| ) |  |
| inlinestatic

Definition at line 199 of file yapf_ship.cpp.

## ◆ CreateRandomPath()

template<class Types >

static Trackdir CYapfFollowShipT< Types >::CreateRandomPath | ( | const Ship * | v,
|  | ShipPathCache & | path_cache,
|  | int | path_length
| ) |  |
| inlinestatic

Creates a random path, avoids 90 degree turns.

Definition at line 180 of file yapf_ship.cpp.

References Vehicle::first, CYapfFollowShipT< Types >::GetRandomFollowUpTileTrackdir(), Ship::GetVehicleTrackdir(), INVALID_TRACKDIR, and Vehicle::tile.

## ◆ GetRandomFollowUpTileTrackdir()

template<class Types >

static std::pair< TileIndex, Trackdir > CYapfFollowShipT< Types >::GetRandomFollowUpTileTrackdir | ( | const Ship * | v,
|  | TileIndex | tile,
|  | Trackdir | dir
| ) |  |
| inlinestatic

Returns a random tile/trackdir that can be reached from the current tile/trackdir, or tile/INVALID_TRACK if none is available.

Definition at line 167 of file yapf_ship.cpp.

References CYapfFollowShipT< Types >::GetRandomTrackdir(), INVALID_TRACKDIR, and TRACKDIR_BIT_NONE.

Referenced by CYapfFollowShipT< Types >::CreateRandomPath().

## ◆ GetRandomTrackdir()

template<class Types >

static Trackdir CYapfFollowShipT< Types >::GetRandomTrackdir | ( | TrackdirBits | trackdirs | ) |
| inlinestatic

Returns a random trackdir out of a set of trackdirs.

Definition at line 159 of file yapf_ship.cpp.

References CountBits(), FindFirstTrackdir(), RandomRange(), and RemoveFirstTrackdir().

Referenced by CYapfFollowShipT< Types >::CheckShipReverse(), and CYapfFollowShipT< Types >::GetRandomFollowUpTileTrackdir().

## ◆ 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 134 of file yapf_ship.cpp.

References GetWaterRegionInfo(), and CYapfFollowShipT< Types >::Yapf().

## ◆ RestrictSearch()

template<class Types >

void CYapfFollowShipT< Types >::RestrictSearch | ( | const std::vector< WaterRegionPatchDesc > & | path | ) |
| inline

Restricts the search by creating corridor or water regions through which the ship is allowed to travel.

Definition at line 146 of file yapf_ship.cpp.

## ◆ TransportTypeChar()

template<class Types >

char CYapfFollowShipT< Types >::TransportTypeChar | ( |  | ) | const
| inline

Return debug report character to identify the transportation type.

Definition at line 153 of file yapf_ship.cpp.

## ◆ Yapf()

template<class Types >

Tpf & CYapfFollowShipT< Types >::Yapf | ( |  | ) |
| inlineprotected

to access inherited path finder

Definition at line 121 of file yapf_ship.cpp.

Referenced by CYapfFollowShipT< Types >::PfFollowNode().

## Field Documentation

## ◆ water_region_corridor

template<class Types >

std::vector<WaterRegionDesc> CYapfFollowShipT< Types >::water_region_corridor
| protected

Definition at line 126 of file yapf_ship.cpp.

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

- src/pathfinder/yapf/yapf_ship.cpp