using System.Runtime.Serialization;
namespace CoreLibrary.Core
{
///
/// Structure représentant un jeton de couleur.
///
[DataContract]
public readonly struct Jeton
{
///
/// Obtient la couleur du jeton.
///
[DataMember]
public Couleur Couleur { get; private init; }
///
/// Constructeur d'un jeton avec une couleur spécifiée.
///
/// La couleur du jeton.
public Jeton(Couleur couleur)
{
Couleur = couleur;
}
///
/// Détermine si l'objet spécifié est égal à l'objet actuel.
///
/// L'objet à comparer avec l'objet actuel.
/// Renvoie true si l'objet spécifié est égal à l'objet actuel. Sinon, false.
public override readonly bool Equals(object? obj)
{
if (obj is not Jeton)
return false;
return Couleur == ((Jeton)obj).Couleur;
}
///
/// Détermine si deux jetons sont égaux.
///
/// Le premier jeton à comparer.
/// Le deuxième jeton à comparer.
/// Renvoie true si les deux jetons sont égaux. Sinon, false.
public static bool operator ==(Jeton gauche, Jeton droite) => gauche.Equals(droite);
///
/// Détermine si deux jetons ne sont pas égaux.
///
/// Le premier jeton à comparer.
/// Le deuxième jeton à comparer.
/// Renvoie true si les deux jetons ne sont pas égaux. Sinon, false.
public static bool operator !=(Jeton gauche, Jeton droite) => gauche.Equals(droite);
///
/// Fonction de hachage.
///
/// Renvoie un code de hachage pour une couleur.
public override readonly int GetHashCode() => Couleur.GetHashCode();
}
}