diff --git a/Sources/MauiSpark/Pages/ClassementPage.xaml.cs b/Sources/MauiSpark/Pages/ClassementPage.xaml.cs
index 96e352c..2e9d803 100644
--- a/Sources/MauiSpark/Pages/ClassementPage.xaml.cs
+++ b/Sources/MauiSpark/Pages/ClassementPage.xaml.cs
@@ -6,24 +6,49 @@ using System.Runtime.CompilerServices;
namespace MauiSpark.Pages
{
+ ///
+ /// Représente un joueur dans le classement.
+ ///
partial class Enfant
{
private readonly Classement classement;
+ ///
+ /// Obtient ou définit le joueur associé à cet enfant.
+ ///
public Joueur Joueur { get; set; }
+
+ ///
+ /// Obtient la place du joueur dans le classement.
+ ///
public int Place => classement.Enfants.ToList().IndexOf(this) + 1;
+
+ ///
+ /// Obtient les statistiques du joueur dans le classement.
+ ///
public IEnumerable Statistiques => Enum.GetValues()
.Select(statistique => Joueur.Statistique(classement.Regles, statistique));
+ ///
+ /// Obtient une liste des objets de cet enfant dans le classement (Son nom et sa place).
+ ///
public IEnumerable Objets => new List([$"{Place}", Joueur.Nom])
.Concat(Statistiques.Select(statistique => $"{statistique}"));
+ ///
+ /// Initialise une nouvelle instance de la classe .
+ ///
+ /// Le joueur associé à cet enfant.
+ /// Le classement auquel cet enfant appartient.
public Enfant(Joueur joueur, Classement classement)
{
this.classement = classement;
Joueur = joueur;
}
+ ///
+ /// Détermine si l'objet spécifié est égal à l'objet actuel.
+ ///
public override bool Equals(object? obj)
{
if (obj == null || obj is not Enfant)
@@ -32,21 +57,42 @@ namespace MauiSpark.Pages
return Joueur == ((Enfant)obj).Joueur;
}
+ ///
+ /// Retourne le code de hachage de cet objet.
+ ///
public override int GetHashCode() => Joueur.GetHashCode();
}
+ ///
+ /// Représente le classement des joueurs.
+ ///
partial class Classement : INotifyPropertyChanged
{
+ ///
+ /// Se produit lorsque la valeur d'une propriété de l'objet change.
+ ///
public event PropertyChangedEventHandler? PropertyChanged;
+ ///
+ /// Déclenche l'événement pour notifier les modifications de propriété.
+ ///
+ /// Le nom de la propriété qui a changé.
public void QuandProprieteChangee([CallerMemberName] string? propriete = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propriete));
private int indiceRegles = 0;
+
+ ///
+ /// Obtient les règles actuelles du classement.
+ ///
public IRegles Regles => ClassementPage.ToutesRegles.ElementAt(indiceRegles);
private Statistique statistique = Enum.GetValues().First();
+
+ ///
+ /// Obtient ou définit la statistique utilisée pour classer les joueurs.
+ ///
public Statistique Statistique
{
get => statistique;
@@ -58,6 +104,10 @@ namespace MauiSpark.Pages
}
private bool inverser = true;
+
+ ///
+ /// Obtient ou définit une valeur indiquant si le classement est inversé.
+ ///
public bool Inverser {
get => inverser;
set
@@ -67,6 +117,9 @@ namespace MauiSpark.Pages
}
}
+ ///
+ /// Obtient les titres des colonnes du classement.
+ ///
public IEnumerable Titres => new List(["Place", "Nom"]).Concat(
Enum.GetValues().Select(
statistique => string.Concat((Enum.GetName(typeof(Statistique), statistique) ?? "").Select(
@@ -75,6 +128,9 @@ namespace MauiSpark.Pages
)
);
+ ///
+ /// Obtient la liste des enfants (joueurs) dans le classement, triée en fonction de la statistique et des règles actuelles.
+ ///
public IEnumerable Enfants => Inverser ?
MauiProgram.Manageur.Joueurs
.OrderBy(joueur => joueur.Statistique(Regles, Statistique))
@@ -83,6 +139,10 @@ namespace MauiSpark.Pages
.OrderBy(joueur => joueur.Statistique(Regles, Statistique))
.Select(joueur => new Enfant(joueur, this));
+ ///
+ /// Incrémente l'indice des règles du classement selon une valeur spécifiée.
+ ///
+ /// La valeur à ajouter à l'indice des règles.
public void IncrementerRegles(int valeur)
{
if ((indiceRegles += valeur) < 0)
@@ -95,13 +155,24 @@ namespace MauiSpark.Pages
}
}
+ ///
+ /// Partie de la logique de l'interface utilisateur de la page de classement.
+ /// Gère les calculs de classement, l'affichage des statistiques et le changement des règles de jeu.
+ ///
public partial class ClassementPage : ContentPage
{
+ ///
+ /// Obtient toutes les règles de jeu disponibles.
+ ///
public static IEnumerable ToutesRegles => typeof(IRegles).Assembly.GetTypes()
.Where(type => typeof(IRegles).IsAssignableFrom(type) && type.IsClass)
.Select(type => (Activator.CreateInstance(type) as IRegles)!)
.OrderBy(regles => regles.Indice);
+ ///
+ /// Constructeur de la page de classement des joueurs.
+ /// Initialise les paramètres de navigation et les composants de la page.
+ ///
public ClassementPage()
{
InitializeComponent();
@@ -111,11 +182,19 @@ namespace MauiSpark.Pages
BindingContext = new Classement();
}
+ ///
+ /// Méthode appelée lorsqu'un bouton de changement de règles est pressé.
+ /// Augmente ou diminue l'indice des règles selon le bouton pressé.
+ ///
public void ChangerReglesPresse(object sender, EventArgs e)
{
((Classement)BindingContext).IncrementerRegles(sender == DiminuerRegles ? -1 : 1);
}
+ ///
+ /// Méthode appelée lorsqu'un bouton statistique est pressée.
+ /// Modifie la statistique de classement ou inverse l'ordre du classement si la même statistique est déjà sélectionnée.
+ ///
public void StatistiquePressee(object sender, EventArgs e)
{
if (sender is not Label || !Enum.IsDefined(typeof(Statistique), ((Label)sender).Text.Replace(" ", "")))