summaryrefslogtreecommitdiff
path: root/src/pathfinder/npf/npf_func.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-12-02 09:57:17 +0000
committerrubidium <rubidium@openttd.org>2009-12-02 09:57:17 +0000
commit9165c195b9609bb9db77cc23ff424802eb4ab128 (patch)
tree1a8b2370e076ace6dd5b6087e94d37bf3a5e2f78 /src/pathfinder/npf/npf_func.h
parentef8cc49175ae8f97c6659c3acd13fdb4434cd535 (diff)
downloadopenttd-9165c195b9609bb9db77cc23ff424802eb4ab128.tar.xz
(svn r18371) -Codechange: unify calling of the train pathfinders
Diffstat (limited to 'src/pathfinder/npf/npf_func.h')
-rw-r--r--src/pathfinder/npf/npf_func.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/pathfinder/npf/npf_func.h b/src/pathfinder/npf/npf_func.h
index ef3b1001c..027e8c794 100644
--- a/src/pathfinder/npf/npf_func.h
+++ b/src/pathfinder/npf/npf_func.h
@@ -12,6 +12,10 @@
#ifndef NPF_FUNC_H
#define NPF_FUNC_H
+#include "../../track_type.h"
+#include "../../direction_type.h"
+#include "../pathfinder_type.h"
+
/**
* Finds the best path for given ship using NPF.
* @param v the ship that needs to find a path
@@ -22,4 +26,45 @@
*/
Track NPFShipChooseTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks);
+/**
+ * Used when user sends train to the nearest depot or if train needs servicing using NPF
+ * @param v train that needs to go to some depot
+ * @param max_distance max distance (number of track tiles) from the current train position
+ * (used also as optimization - the pathfinder can stop path finding if max_distance
+ * was reached and no depot was seen)
+ * @return the data about the depot
+ */
+FindDepotData NPFTrainFindNearestDepot(const Train *v, int max_distance);
+
+/**
+ * Try to extend the reserved path of a train to the nearest safe tile using NPF.
+ *
+ * @param v The train that needs to find a safe tile.
+ * @param tile Last tile of the current reserved path.
+ * @param td Last trackdir of the current reserved path.
+ * @param override_railtype Should all physically compatible railtypes be searched, even if the vehicle can't run on them on its own?
+ * @return True if the path could be extended to a safe tile.
+ */
+bool NPFTrainFindNearestSafeTile(const Train *v, TileIndex tile, Trackdir td, bool override_railtype);
+
+/**
+ * Returns true if it is better to reverse the train before leaving station using NPF.
+ * @param v the train leaving the station
+ * @return true if reversing is better
+ */
+bool NPFTrainCheckReverse(const Train *v);
+
+/**
+ * Finds the best path for given train using NPF.
+ * @param v the train that needs to find a path
+ * @param tile the tile to find the path from (should be next tile the train is about to enter)
+ * @param enterdir diagonal direction which the RV will enter this new tile from
+ * @param tracks available trackdirs on the new tile (to choose from)
+ * @param path_not_found [out] true is returned if no path can be found (returned Trackdir is only a 'guess')
+ * @param reserve_track indicates whether YAPF should try to reserve the found path
+ * @param target [out] the target tile of the reservation, free is set to true if path was reserved
+ * @return the best track for next turn
+ */
+Track NPFTrainChooseTrack(const Train *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found, bool reserve_track, struct PBSTileInfo *target);
+
#endif /* NPF_FUNC_H */