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; }
}
}