using System.Drawing;
using System.Text.Json.Serialization;

namespace File_Folder_Helper.Models.Face;

[method: JsonConstructor]
public class FacePoint(int index, int x, int y)
{
    public int Index { get; } = index;
    public int X { get; } = x;
    public int Y { get; } = y;

    private readonly Point _Point = new(x, y);

    public override bool Equals(object? obj) => obj is FacePoint point && Equals(point);

#pragma warning disable IDE0070
    public override int GetHashCode()
#pragma warning restore IDE0070
    {
        int hashCode = 1861411795;
        hashCode = (hashCode * -1521134295) + _Point.GetHashCode();
        hashCode = (hashCode * -1521134295) + Index.GetHashCode();
        return hashCode;
    }

    public bool Equals(FacePoint? facePoint)
    {
        return facePoint is not null
            && X == facePoint.X
            && Y == facePoint.Y
            && Index == facePoint.Index;
    }

    public static bool operator ==(FacePoint point1, FacePoint point2) => point1.Equals(point2);

    public static bool operator !=(FacePoint point1, FacePoint point2) => !(point1 == point2);

}