From 95527d8b0e60a3e0298ded869c0a332e162ea5b3 Mon Sep 17 00:00:00 2001 From: "pauline.prady" Date: Wed, 29 May 2024 17:47:18 +0200 Subject: [PATCH] Debut persistance --- Sources/CoreLibrary/Joueurs/Joueur.cs | 8 +- .../Manager/IPersistanceManager.cs | 8 +- Sources/CoreLibrary/Partie.cs | 3 + .../CoreLibrary/Persistance/IPersistance.cs | 16 ++++ .../CoreLibrary/Persistance/Persistance.cs | 75 +++++++++++++++++++ Sources/CoreLibrary/Regles/IRegles.cs | 1 + .../CoreLibrary/Regles/ReglesClassiques.cs | 9 ++- 7 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 Sources/CoreLibrary/Persistance/IPersistance.cs create mode 100644 Sources/CoreLibrary/Persistance/Persistance.cs diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs index ba6ffb4..907338b 100644 --- a/Sources/CoreLibrary/Joueurs/Joueur.cs +++ b/Sources/CoreLibrary/Joueurs/Joueur.cs @@ -1,21 +1,27 @@ using CoreLibrary.Core; using CoreLibrary.Events; +using System.Runtime.Serialization; namespace CoreLibrary.Joueurs { /// /// Classe représentant un joueur. /// + [DataContract] public class Joueur { /// /// Le nom du joueur. /// + [DataMember] public string Nom { get; private init; } - + [DataMember] public int NbCoutTotal { get; set; } + [DataMember] public int NbPartieGagnee { get; set; } + [DataMember] public int NbPartieEgalite { get; set; } + [DataMember] public int NbPartiePerdue { get; set; } /// diff --git a/Sources/CoreLibrary/Manager/IPersistanceManager.cs b/Sources/CoreLibrary/Manager/IPersistanceManager.cs index 501b80b..306c296 100644 --- a/Sources/CoreLibrary/Manager/IPersistanceManager.cs +++ b/Sources/CoreLibrary/Manager/IPersistanceManager.cs @@ -6,8 +6,12 @@ namespace CoreLibrary.Manager { public bool EstEnregistre { get; } - public IEnumerable Charger(); + public IEnumerable ChargerJoueurs(); - public void Enregistrer(IEnumerable donnees); + public IEnumerable ChargerParties(); + + public void EnregistrerJoueurs(IEnumerable donnees); + + public void EnregistrerParties(IEnumerable donnees); } } diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs index 9c9a14b..aaab371 100644 --- a/Sources/CoreLibrary/Partie.cs +++ b/Sources/CoreLibrary/Partie.cs @@ -2,14 +2,17 @@ using CoreLibrary.Events; using CoreLibrary.Joueurs; using CoreLibrary.Regles; +using System.Runtime.Serialization; namespace CoreLibrary { /// /// Représente une partie de jeu. /// + [DataContract] public class Partie { + [DataMember] public IRegles Regles { get; private set; } private readonly List joueurs = new List(); diff --git a/Sources/CoreLibrary/Persistance/IPersistance.cs b/Sources/CoreLibrary/Persistance/IPersistance.cs new file mode 100644 index 0000000..7263842 --- /dev/null +++ b/Sources/CoreLibrary/Persistance/IPersistance.cs @@ -0,0 +1,16 @@ +using CoreLibrary.Joueurs; + +namespace CoreLibrary.Persistance +{ + public interface IPersistance + { + + public List ChargerJoueurs(); + + public List ChargerParties(); + + public void EnregistrerJoueurs(List joueurs); + + public void EnregistrerParties(List parties); + } +} diff --git a/Sources/CoreLibrary/Persistance/Persistance.cs b/Sources/CoreLibrary/Persistance/Persistance.cs new file mode 100644 index 0000000..8db6b89 --- /dev/null +++ b/Sources/CoreLibrary/Persistance/Persistance.cs @@ -0,0 +1,75 @@ +using CoreLibrary.Joueurs; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Text.Json; + +namespace CoreLibrary.Persistance +{ + public class Persistance : IPersistance + { + public List joueurs = new List(); + public List parties = new List(); + + public string ancienRepertoire = Directory.GetCurrentDirectory(); + + public List ChargerJoueurs() + { + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); + + using (FileStream s = File.OpenRead("joueurs.json")) + { + joueurs = jsonSerializer.ReadObject(s) as List; + } + + return joueurs; + } + + public List ChargerParties() + { + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); + + using (FileStream s = File.OpenRead("parties.json")) + { + parties = jsonSerializer.ReadObject(s) as List; + } + + return parties; + } + + public void EnregistrerJoueurs(List joueurs) + { + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); + + using (FileStream s = File.Create("joueurs.json")) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter( + s, + Encoding.UTF8, + false, + true)) + { + jsonSerializer.WriteObject(writer, joueurs); + } + } + Directory.SetCurrentDirectory(ancienRepertoire); + } + + public void EnregistrerParties(List parties) + { + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); + + using (FileStream s = File.Create("parties.json")) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter( + s, + Encoding.UTF8, + false, + true)) + { + jsonSerializer.WriteObject(writer, parties); + } + } + Directory.SetCurrentDirectory(ancienRepertoire); + } + } +} diff --git a/Sources/CoreLibrary/Regles/IRegles.cs b/Sources/CoreLibrary/Regles/IRegles.cs index bba390b..a8d8e7b 100644 --- a/Sources/CoreLibrary/Regles/IRegles.cs +++ b/Sources/CoreLibrary/Regles/IRegles.cs @@ -1,4 +1,5 @@ using CoreLibrary.Core; +using System.Runtime.Serialization; namespace CoreLibrary.Regles { diff --git a/Sources/CoreLibrary/Regles/ReglesClassiques.cs b/Sources/CoreLibrary/Regles/ReglesClassiques.cs index d4bd89f..ca65851 100644 --- a/Sources/CoreLibrary/Regles/ReglesClassiques.cs +++ b/Sources/CoreLibrary/Regles/ReglesClassiques.cs @@ -1,28 +1,35 @@ -namespace CoreLibrary.Regles +using System.Runtime.Serialization; + +namespace CoreLibrary.Regles { /// /// Classe définissant les règles classiques du jeu. /// + [DataContract] public class ReglesClassiques : IRegles { /// /// Le nom des règles. /// + [DataMember] public string Nom { get => "Règles classiques"; } /// /// Le nombre maximum de tour. /// + [DataMember] public int TourMaximum { get => 12; } /// /// La taille maximale d'un code. /// + [DataMember] public int TailleCodeMaximum { get => 4; } /// /// Me nombre maximum de joueurs possibles pour le jeu. /// + [DataMember] public int NbJoueursMaximum { get => 2; } } }