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(); } }