mourning-ember / src / main / java / dev / llan / model / board / pathfinding / Node.java
Node.java
Raw
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());
  }
}