gamnit: make `SpriteSet` public so clients can use its services
[nit.git] / lib / a_star.nit
index 7b7ce02..db80519 100644 (file)
@@ -90,7 +90,7 @@ class Node
        # lifetime limited to evocation of `path_to`
        private var open: Bool = false
 
-       # Main functionnality, returns path from `self` to `dest`
+       # Main functionality, returns path from `self` to `dest`
        fun path_to(dest: N, max_cost: Int, context: PathContext): nullable AStarPath[N]
        do
                return path_to_alts(dest, max_cost, context, null)
@@ -188,6 +188,14 @@ class Node
                end
        end
 
+       # Find the closest node accepted by `cond` under `max_cost`
+       fun find_closest(max_cost: Int, context: PathContext, cond: nullable TargetCondition[N]): nullable N
+       do
+               var path = path_to_alts(null, max_cost, context, cond)
+               if path == null then return null
+               return path.nodes.last
+       end
+
        # We customize the serialization process to avoid problems with recursive
        # serialization engines. These engines, such as `JsonSerializer`,
        # are at danger to serialize the graph as a very deep tree.