OpenTTD
Functions
npf_func.h File Reference

Functions to access the new pathfinder. More...

#include "../../track_type.h"
#include "../../direction_type.h"
#include "../../vehicle_type.h"
#include "../pathfinder_type.h"

Go to the source code of this file.

Functions

FindDepotData NPFRoadVehicleFindNearestDepot (const RoadVehicle *v, int max_penalty)
 Used when user sends road vehicle to the nearest depot or if road vehicle needs servicing using NPF.
Trackdir NPFRoadVehicleChooseTrack (const RoadVehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool &path_found)
 Finds the best path for given road vehicle using NPF.
Track NPFShipChooseTrack (const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found)
 Finds the best path for given ship using NPF.
bool NPFShipCheckReverse (const Ship *v)
 Returns true if it is better to reverse the ship before leaving depot using NPF.
FindDepotData NPFTrainFindNearestDepot (const Train *v, int max_penalty)
 Used when user sends train to the nearest depot or if train needs servicing using NPF.
bool NPFTrainFindNearestSafeTile (const Train *v, TileIndex tile, Trackdir td, bool override_railtype)
 Try to extend the reserved path of a train to the nearest safe tile using NPF.
bool NPFTrainCheckReverse (const Train *v)
 Returns true if it is better to reverse the train before leaving station using NPF.
Track NPFTrainChooseTrack (const Train *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool &path_found, bool reserve_track, struct PBSTileInfo *target)
 Finds the best path for given train using NPF.

Detailed Description

Functions to access the new pathfinder.

Definition in file npf_func.h.

Function Documentation

Trackdir NPFRoadVehicleChooseTrack ( const RoadVehicle v,
TileIndex  tile,
DiagDirection  enterdir,
TrackdirBits  trackdirs,
bool &  path_found 
)

Finds the best path for given road vehicle using NPF.

Parameters
vthe RV that needs to find a path
tilethe tile to find the path from (should be next tile the RV is about to enter)
enterdirdiagonal direction which the RV will enter this new tile from
trackdirsavailable trackdirs on the new tile (to choose from)
path_found[out] Whether a path has been found (true) or has been guessed (false)
Returns
the best trackdir for next turn or INVALID_TRACKDIR if the path could not be found

Definition at line 1131 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, NPFFoundTargetData::best_trackdir, DiagDirToDiagTrackdir(), FindFirstBit2x64(), INVALID_RAILTYPES, INVALID_TRACKDIR, Vehicle::owner, TileOffsByDiagDir(), and TRANSPORT_ROAD.

Referenced by RoadFindPathToDest().

FindDepotData NPFRoadVehicleFindNearestDepot ( const RoadVehicle v,
int  max_penalty 
)

Used when user sends road vehicle to the nearest depot or if road vehicle needs servicing using NPF.

Parameters
vvehicle that needs to go to some depot
max_penaltymax distance (in pathfinder penalty) from the current vehicle position (used also as optimization - the pathfinder can stop path finding if max_penalty was reached and no depot was seen)
Returns
the data about the depot

Definition at line 1114 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, NPFFoundTargetData::best_path_dist, RoadVehicle::GetVehicleTrackdir(), INVALID_RAILTYPES, NPFFoundTargetData::node, Vehicle::owner, ReverseTrackdir(), Vehicle::tile, and TRANSPORT_ROAD.

bool NPFShipCheckReverse ( const Ship v)

Returns true if it is better to reverse the ship before leaving depot using NPF.

Parameters
vthe ship leaving the depot
Returns
true if reversing is better

Definition at line 1178 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, Ship::GetVehicleTrackdir(), INVALID_RAILTYPES, INVALID_TRACKDIR, NPFFoundTargetData::node, NPF_FLAG_REVERSE, NPFGetFlag(), Vehicle::owner, ReverseTrackdir(), ROADTYPES_NONE, Vehicle::tile, and TRANSPORT_WATER.

Track NPFShipChooseTrack ( const Ship v,
TileIndex  tile,
DiagDirection  enterdir,
TrackBits  tracks,
bool &  path_found 
)

Finds the best path for given ship using NPF.

Parameters
vthe ship that needs to find a path
tilethe tile to find the path from (should be next tile the ship is about to enter)
enterdirdiagonal direction which the ship will enter this new tile from
tracksavailable tracks on the new tile (to choose from)
path_found[out] Whether a path has been found (true) or has been guessed (false)
Returns
the best trackdir for next turn or INVALID_TRACK if the path could not be found

Definition at line 1158 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, NPFFoundTargetData::best_trackdir, Ship::GetVehicleTrackdir(), INVALID_RAILTYPES, INVALID_TRACK, INVALID_TRACKDIR, Vehicle::owner, ROADTYPES_NONE, TileOffsByDiagDir(), TrackdirToTrack(), and TRANSPORT_WATER.

Referenced by ChooseShipTrack().

bool NPFTrainCheckReverse ( const Train v)

Returns true if it is better to reverse the train before leaving station using NPF.

Parameters
vthe train leaving the station
Returns
true if reversing is better

Definition at line 1241 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, Train::GetVehicleTrackdir(), INVALID_TRACKDIR, SpecializedVehicle< T, Type >::Last(), NPFFoundTargetData::node, NPF_FLAG_REVERSE, NPFGetFlag(), Vehicle::owner, ReverseTrackdir(), ROADTYPES_NONE, Vehicle::tile, and TRANSPORT_RAIL.

Track NPFTrainChooseTrack ( const Train v,
TileIndex  tile,
DiagDirection  enterdir,
TrackBits  tracks,
bool &  path_found,
bool  reserve_track,
struct PBSTileInfo target 
)

Finds the best path for given train using NPF.

Parameters
vthe train that needs to find a path
tilethe tile to find the path from (should be next tile the train is about to enter)
enterdirdiagonal direction which the RV will enter this new tile from
tracksavailable trackdirs on the new tile (to choose from)
path_found[out] Whether a path has been found (true) or has been guessed (false)
reserve_trackindicates whether YAPF should try to reserve the found path
target[out] the target tile of the reservation, free is set to true if path was reserved
Returns
the best track for next turn

Definition at line 1260 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, NPFFoundTargetData::best_trackdir, FindFirstTrack(), FollowTrainReservation(), INVALID_TRACKDIR, IsValidTrackdir(), NPFFoundTargetData::node, PBSTileInfo::okay, Vehicle::owner, NPFFoundTargetData::res_okay, ROADTYPES_NONE, PBSTileInfo::tile, PBSTileInfo::trackdir, TrackdirToTrack(), and TRANSPORT_RAIL.

Referenced by DoTrainPathfind().

FindDepotData NPFTrainFindNearestDepot ( const Train v,
int  max_penalty 
)

Used when user sends train to the nearest depot or if train needs servicing using NPF.

Parameters
vtrain that needs to go to some depot
max_penaltymax max_penalty (in pathfinder penalty) from the current train position (used also as optimization - the pathfinder can stop path finding if max_penalty was reached and no depot was seen)
Returns
the data about the depot

Definition at line 1198 of file npf.cpp.

References NPFFoundTargetData::best_bird_dist, NPFFoundTargetData::best_path_dist, Train::GetVehicleTrackdir(), INVALID_TRACKDIR, SpecializedVehicle< T, Type >::Last(), NPFFoundTargetData::node, NPF_FLAG_REVERSE, NPF_INFINITE_PENALTY, NPFGetFlag(), Vehicle::owner, ReverseTrackdir(), ROADTYPES_NONE, Vehicle::tile, TRANSPORT_RAIL, and NPFFindStationOrTileData::v.

Referenced by FindClosestTrainDepot().

bool NPFTrainFindNearestSafeTile ( const Train v,
TileIndex  tile,
Trackdir  td,
bool  override_railtype 
)

Try to extend the reserved path of a train to the nearest safe tile using NPF.

Parameters
vThe train that needs to find a safe tile.
tileLast tile of the current reserved path.
tdLast trackdir of the current reserved path.
override_railtypeShould all physically compatible railtypes be searched, even if the vehicle can't run on them on its own?
Returns
True if the path could be extended to a safe tile.

Definition at line 1220 of file npf.cpp.

References RailtypeInfo::compatible_railtypes, GetRailTypeInfo(), NPFFindSafeTile(), Vehicle::owner, NPFFoundTargetData::res_okay, NPFFindStationOrTileData::reserve_path, ROADTYPES_NONE, TRANSPORT_RAIL, BaseVehicle::type, NPFFindStationOrTileData::v, and VEH_TRAIN.

Referenced by TryReserveSafeTrack().