namespace RobotNet.RobotManager.Services.Planner.AStar;

#nullable disable

public class AStarNode
{
    public Guid Id { get; set; }
    public double X { get; set; }
    public double Y { get; set; }
    public double Cost { get; set; }
    public double Heuristic { get; set; }
    public double TotalCost => Cost + Heuristic;
    public string Name { get; set; }
    public AStarNode Parent { get; set; }
    public List<AStarNode> NegativeNodes { get; set; } = [];

    public override bool Equals(object obj)
    {
        if (obj is AStarNode other)
            return Id == other.Id;
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Id);
    }
}
