|
OpenTTD Source 20260421-master-gc2fbc6fdeb
|
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 () |
| Access the inherited path finder. | |
Protected Attributes | |
| std::vector< WaterRegionDesc > | water_region_corridor |
Node Follower module of YAPF for ships.
Definition at line 110 of file yapf_ship.cpp.
| typedef Node::Key CYapfFollowShipT< Types >::Key |
key to hash tables.
Definition at line 115 of file yapf_ship.cpp.
| typedef Types::NodeList::Item CYapfFollowShipT< Types >::Node |
this will be our node type.
Definition at line 114 of file yapf_ship.cpp.
| typedef Types::Tpf CYapfFollowShipT< Types >::Tpf |
the pathfinder class (derived from THIS class).
Definition at line 112 of file yapf_ship.cpp.
| typedef Types::TrackFollower CYapfFollowShipT< Types >::TrackFollower |
Definition at line 113 of file yapf_ship.cpp.
|
inlinestatic |
Check whether a ship should reverse to reach its destination.
Called when leaving depot.
| v | Ship. |
| trackdir | [out] the best of all possible reversed trackdirs. |
Definition at line 300 of file yapf_ship.cpp.
References DiagdirReachesTrackdirs(), Vehicle::direction, GetRandomTrackdir(), GetTileTrackStatus(), Ship::GetVehicleTrackdir(), Invalid, INVALID_TRACKDIR, ReverseDiagDir(), ReverseTrackdir(), Ship::state, Vehicle::tile, TRACKDIR_BIT_NONE, TrackdirToTrackdirBits(), TrackStatusToTrackdirBits(), TRANSPORT_WATER, and VehicleExitDir().
Referenced by YapfShipCheckReverse().
|
inlinestatic |
Definition at line 212 of file yapf_ship.cpp.
|
inlinestatic |
Creates a random path, avoids 90 degree turns.
| v | The ship to create the path for. | |
| [in,out] | path_cache | Cache of the path for the ship. |
| path_length | The length of the random path to create. |
INVALID_TRACKDIR when there is no option. Definition at line 193 of file yapf_ship.cpp.
References Vehicle::first, GetRandomFollowUpTileTrackdir(), Ship::GetVehicleTrackdir(), INVALID_TRACKDIR, and Vehicle::tile.
|
inlinestatic |
Returns a random tile/trackdir that can be reached from the current tile/trackdir, or tile/INVALID_TRACK if none is available.
| v | The ship to get the direction for. |
| tile | The start tile. |
| dir | the start direction. |
Definition at line 174 of file yapf_ship.cpp.
References GetRandomTrackdir(), INVALID_TRACKDIR, TRACKDIR_BIT_NONE, and TrackdirCrossesTrackdirs().
Referenced by CreateRandomPath().
|
inlinestatic |
Returns a random trackdir out of a set of trackdirs.
| trackdirs | The possible track dirs. |
Definition at line 160 of file yapf_ship.cpp.
References CountBits(), FindFirstTrackdir(), RandomRange(), and RemoveFirstTrackdir().
Referenced by CheckShipReverse(), and GetRandomFollowUpTileTrackdir().
|
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).
| old_node | The node to follow from. |
Definition at line 128 of file yapf_ship.cpp.
References GetWaterRegionInfo(), and Yapf().
|
inline |
Restricts the search by creating corridor or water regions through which the ship is allowed to travel.
| path | The path to restrict the search by. |
Definition at line 143 of file yapf_ship.cpp.
|
inline |
Return debug report character to identify the transportation type.
Definition at line 150 of file yapf_ship.cpp.
|
inlineprotected |
Access the inherited path finder.
Definition at line 119 of file yapf_ship.cpp.
Referenced by PfFollowNode().
|
protected |
Definition at line 124 of file yapf_ship.cpp.