From 9e9990227e2c892573348c064be31ae1dd06dbd4 Mon Sep 17 00:00:00 2001 From: "camille.turpin-etienne" Date: Wed, 5 Jun 2024 12:40:26 +0200 Subject: [PATCH] doc classement --- .../MauiSpark/Pages/ClassementPage.xaml.cs | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) 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(" ", "")))