diff --git a/.gitignore b/.gitignore index 8adc7a9..1e3c254 100644 --- a/.gitignore +++ b/.gitignore @@ -859,8 +859,4 @@ FodyWeavers.xsd *.msp # JetBrains Rider -*.sln.iml -/Sources/MauiSpark/Pages/Views/CTableauScore.xaml -/Sources/MauiSpark/Pages/Views/CTableauScore.xaml.cs -/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml -/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml.cs +*.sln.iml \ No newline at end of file diff --git a/Sources/ConsoleApp1/Program.cs b/Sources/ConsoleApp1/Program.cs index 5f72681..6d47dfe 100644 --- a/Sources/ConsoleApp1/Program.cs +++ b/Sources/ConsoleApp1/Program.cs @@ -1,5 +1,9 @@ using CoreLibrary.Persistance; using CoreLibrary.Joueurs; +using System.Collections.Generic; +using CoreLibrary; +using CoreLibrary.Regles; +using CoreLibrary.Core; PersistanceJSON p = new(); @@ -7,3 +11,24 @@ List mesJoueurs = new List([ new Joueur("Céleste"), new Joueur("Pauline") ]); + + +p.Enregistrer(mesJoueurs.ToArray()); + +IEnumerable element = p.Charger(); + + +foreach (Joueur joueur in element) +{ + Console.WriteLine(joueur.Nom); +} + + +Partie partie1 = new Partie(null, null); +Partie partie2 = new Partie(null, null); + + + +List parties = new List { partie1, partie2 }; + +p.Enregistrer(parties.ToArray()); diff --git a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs index 9f03a23..63cc9a8 100644 --- a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs +++ b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs @@ -10,20 +10,29 @@ namespace CoreLibrary.Persistance public T[] Charger() { - string fichier = $"{nameof(T)}.json"; + string fichier = $"{typeof(T).Name}.json"; string ancienDossier = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); - - if(!Directory.Exists("Fichiers") || !File.Exists(fichier)) + Console.WriteLine(Directory.GetCurrentDirectory()); + if(!Directory.Exists("Fichiers")) { Directory.SetCurrentDirectory(ancienDossier); return []; } + else + { + Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); + } - Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); + if (!File.Exists(fichier)) + { + Directory.SetCurrentDirectory(ancienDossier); + return []; + } +; - DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); T[] elements; using (FileStream s = File.OpenRead(fichier)) @@ -37,7 +46,7 @@ namespace CoreLibrary.Persistance public void Enregistrer(T[] elements) { - string fichier = $"{nameof(T)}.json"; + string fichier = $"{typeof(T).Name}.json"; string ancienDossier = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); @@ -49,7 +58,7 @@ namespace CoreLibrary.Persistance Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); - DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); using(FileStream s = File.Create(fichier)) { diff --git a/Sources/Fichiers/T.json b/Sources/Fichiers/T.json deleted file mode 100644 index e69de29..0000000 diff --git a/Sources/MauiSpark/Pages/Views/CTableauScore.xaml b/Sources/MauiSpark/Pages/Views/CTableauScore.xaml new file mode 100644 index 0000000..3372ef1 --- /dev/null +++ b/Sources/MauiSpark/Pages/Views/CTableauScore.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sources/MauiSpark/Pages/Views/CTableauScore.xaml.cs b/Sources/MauiSpark/Pages/Views/CTableauScore.xaml.cs new file mode 100644 index 0000000..f16a7e1 --- /dev/null +++ b/Sources/MauiSpark/Pages/Views/CTableauScore.xaml.cs @@ -0,0 +1,245 @@ +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 int NbCliquer { get; set; } = 0; + + public IEnumerable GetClassementNbCoupParPartie() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) + .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) + .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + } + } + + public IEnumerable GetClassementPartieGagnee() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbPartieGagnee) + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartieGagnee) + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + } + + } + + public IEnumerable GetClassementPartieEgalite() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbPartieEgalite) + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartieEgalite) + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + } + + } + + public IEnumerable GetClassementPartiePerdue() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbPartiePerdue) + .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; +; return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartiePerdue) + .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); + } + + } + + public IEnumerable GetClassementAlphabet() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.Nom) + .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + 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(); + } +} \ No newline at end of file diff --git a/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml b/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml new file mode 100644 index 0000000..7c7e294 --- /dev/null +++ b/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml.cs b/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml.cs new file mode 100644 index 0000000..fcc56ee --- /dev/null +++ b/Sources/MauiSpark/Pages/Views/UsernameEntryView.xaml.cs @@ -0,0 +1,9 @@ +namespace MauiSpark.Views; + +public partial class UsernameEntryView : ContentView +{ + public UsernameEntryView() + { + InitializeComponent(); + } +} \ No newline at end of file