You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastermind/Sources/CoreLibrary/Core/Jeton.cs

62 lines
2.3 KiB

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