using RobotNet.RobotShares.Enums;

namespace RobotNet.RobotManager.Services.Planner.ForkliftV2;

#nullable disable

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

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

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