package dev.llan.model.board.pathfinding; import dev.llan.model.board.Point; import java.util.Optional; public class Node implements Comparable { private final Point point; private final Optional parent; private final double distance; private final double cost; public Node(Point point, Node parent, double distance, double cost) { this.point = point; this.parent = Optional.of(parent); this.distance = distance; this.cost = cost; } public Node(Point point, double distance) { this.point = point; this.parent = Optional.empty(); this.distance = distance; this.cost = 0.0; } public Point getPoint() { return point; } public Optional getParent() { return parent; } public double getCost() { return this.cost; } private double getComparisonScore() { return cost + distance; } @Override public int compareTo(Node o) { return Double.compare(this.getComparisonScore(), o.getComparisonScore()); } }