using CoreLibrary.Events; using CoreLibrary.Joueurs; using CoreLibrary.Manager; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; namespace MauiSpark.Views; public class JoueurClassementNbCoupParPartie { private Manager manager; private Joueur joueur; public Joueur Joueur { get => joueur; private set => joueur = value; } public int Place { get => manager.Joueurs .OrderBy(joueur => joueur.NbCoutTotal/(joueur.NbPartiePerdue+joueur.NbPartieGagnee+joueur.NbPartieEgalite)).ToList() .IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); public JoueurClassementNbCoupParPartie(Joueur joueur, Manager manager) { this.manager = manager; this.joueur = joueur; } } public class JoueurClassementPartieGagnee { private Manager manager; private Joueur joueur; public Joueur Joueur { get => joueur; private set => joueur = value; } public int Place { get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartieGagnee).ToList().IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); public JoueurClassementPartieGagnee(Joueur joueur, Manager manager) { this.manager = manager; this.joueur = joueur; } } public class JoueurClassementPartieEgalite { private Manager manager; private Joueur joueur; public Joueur Joueur { get => joueur; private set => joueur = value; } public int Place { get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartieEgalite).ToList().IndexOf(joueur)+1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); public JoueurClassementPartieEgalite(Joueur joueur, Manager manager) { this.manager = manager; this.joueur = joueur; } } public class JoueurClassementPartiePerdue { private Manager manager; private Joueur joueur; public Joueur Joueur { get => joueur; private set => joueur = value; } public int Place { get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartiePerdue).ToList().IndexOf(joueur)+1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); public JoueurClassementPartiePerdue(Joueur joueur, Manager manager) { this.manager = manager; this.joueur = joueur; } } public class JoueurClassementAlphabet { private Manager manager; private Joueur joueur; public Joueur Joueur { get => joueur; private set => joueur = value; } public int Place { get => manager.Joueurs .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)).ToList() .IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); public JoueurClassementAlphabet(Joueur joueur, Manager manager) { this.manager = manager; this.joueur = joueur; } } public partial class CTableauScore : ContentView { public IEnumerable GetClassementNbCoupParPartie() { return MauiProgram.Manager.Joueurs .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); } public IEnumerable GetClassementPartieGagnee() { return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.NbPartieGagnee) .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); } public IEnumerable GetClassementPartieEgalite() { return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.NbPartieEgalite) .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); } public IEnumerable GetClassementPartiePerdue() { return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.NbPartiePerdue) .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); } public IEnumerable GetClassementAlphabetHaut() { return MauiProgram.Manager.Joueurs .OrderBy(joueur => joueur.Nom) .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); } public IEnumerable GetClassementAlphabetBas() { return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.Nom) .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); } public CTableauScore() { InitializeComponent(); } public void UpdateClassement(Func> getClassement) { BindingContext = getClassement(); } }