using RobotNet.MapShares.Dtos;
using RobotNet.RobotManager.Services.Planner.Space;
using RobotNet.RobotShares.Enums;

namespace RobotNet.RobotManager.Services.Simulation.Models;

public class NavigationNode
{
    public Guid Id { get; set; }
    public double X { get; set; }
    public double Y { get; set; }
    public double Theta { get; set; }
    public RobotDirection Direction { get; set; }
    public string Actions { get; set; } = string.Empty;

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

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

    public NodeDto ToNodeDto()
    {
        return new NodeDto
        {
            Id = Id,
            X = X,
            Y = Y,
            Theta = Theta,
            Direction = MapCompute.GetNodeDirection(Direction),
            Actions = Actions
        };
    }
}
