X-Git-Url: http://nitlanguage.org diff --git a/lib/a_star.nit b/lib/a_star.nit index a0b1b48..7b7ce02 100644 --- a/lib/a_star.nit +++ b/lib/a_star.nit @@ -14,9 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Services related to pathfinding of graphs using A* -# A single graph may have different properties according to the `PathContext` used +# A* pathfinding in graphs # +# A single graph may have different properties according to the `PathContext` used # # Usage: # @@ -194,7 +194,7 @@ class Node # With a large graph it can cause a stack overflow. # # Instead, we serialize the nodes first and then the links. - redef fun core_serialize_to(serializer: Serializer) + redef fun core_serialize_to(serializer) do serializer.serialize_attribute("graph", graph) end @@ -211,7 +211,7 @@ end # Link between two nodes and associated to a graph class Link - auto_serializable + serialize # Type of the nodes in `graph` type N: Node @@ -265,7 +265,7 @@ class Graph[N: Node, L: Link] # Used to check if nodes have been searched in one pathfinding private var pathfinding_current_evocation: Int = 0 - redef fun core_serialize_to(serializer: Serializer) + redef fun core_serialize_to(serializer) do serializer.serialize_attribute("nodes", nodes) serializer.serialize_attribute("links", links) @@ -287,7 +287,7 @@ end # Result from path finding and a walkable path class AStarPath[N] - auto_serializable + serialize # Total cost of this path var total_cost: Int @@ -316,8 +316,8 @@ class AStarPath[N] end # Context related to an evocation of pathfinding -class PathContext - auto_serializable +abstract class PathContext + serialize # Type of the nodes in `graph` type N: Node @@ -352,7 +352,7 @@ end # Warning: A* is not optimize for such a case class ConstantPathContext super PathContext - auto_serializable + serialize redef fun worst_cost do return 1 redef fun cost(l) do return 1 @@ -364,7 +364,7 @@ end # A `PathContext` for graphs with `WeightedLink` class WeightedPathContext super PathContext - auto_serializable + serialize redef type L: WeightedLink @@ -380,7 +380,7 @@ class WeightedPathContext self.worst_cost = worst_cost end - redef var worst_cost: Int is noinit + redef var worst_cost is noinit redef fun cost(l) do return l.weight @@ -393,15 +393,15 @@ end # A `Link` with a `weight` class WeightedLink super Link - auto_serializable + serialize # The `weight`, or cost, of this link var weight: Int end # Advanced path conditions with customizable accept states -class TargetCondition[N: Node] - auto_serializable +abstract class TargetCondition[N: Node] + serialize # Should the pathfinding accept `node` as a goal? fun accept(node: N): Bool is abstract