using System;

namespace NodeWar;

public class NoduleConnection
{
	public Nodule A { get; set; }
	public Nodule B { get; set; }

	public override bool Equals(object obj)
	{
		if (ReferenceEquals(null, obj))
			return false;
		if (ReferenceEquals(this, obj))
			return true;

		return obj.GetType() == GetType() && Equals((NoduleConnection)obj);
	}

	private bool Equals(NoduleConnection other)
	{
		return (Equals(A, other.A) && Equals(B, other.B))
			|| (Equals(A, other.B) && Equals(B, other.A));
	}

	public override int GetHashCode()
	{
		var h1 = A?.GetHashCode() ?? 0;
		var h2 = B?.GetHashCode() ?? 0;
		return h1 ^ h2;
	}

	public static bool operator ==(NoduleConnection left, NoduleConnection right)
	{
		return Equals(left, right);
	}

	public static bool operator !=(NoduleConnection left, NoduleConnection right)
	{
		return !Equals(left, right);
	}
}
