package dev.llan.model.board.pathfinding;
import dev.llan.model.board.Point;
import java.util.Optional;
public class Node implements Comparable<Node> {
private final Point point;
private final Optional<Node> 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<Node> 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());
}
}