From 0e7c323e6c26170c5ee0b79a7bb8a753ce8a2ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20LAVERGNE?= Date: Fri, 31 May 2024 11:27:10 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20=20Ajout=20des=20listes=20et=20m?= =?UTF-8?q?=C3=A9thodes=20de=20persistance=20avec=20le=20constructeur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataContractPersistence.csproj | 13 ++++ .../DataContractPersistence/DataToPersist.cs | 13 ++++ source/Trek-12/Models/Game/Game.cs | 65 +++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 source/Trek-12/DataContractPersistence/DataContractPersistence.csproj create mode 100644 source/Trek-12/DataContractPersistence/DataToPersist.cs diff --git a/source/Trek-12/DataContractPersistence/DataContractPersistence.csproj b/source/Trek-12/DataContractPersistence/DataContractPersistence.csproj new file mode 100644 index 0000000..fbf8a46 --- /dev/null +++ b/source/Trek-12/DataContractPersistence/DataContractPersistence.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/source/Trek-12/DataContractPersistence/DataToPersist.cs b/source/Trek-12/DataContractPersistence/DataToPersist.cs new file mode 100644 index 0000000..9a8dad5 --- /dev/null +++ b/source/Trek-12/DataContractPersistence/DataToPersist.cs @@ -0,0 +1,13 @@ +using System.Collections.ObjectModel; +using Models.Game; + +namespace DataContractPersistence +{ + public class DataToPersist + { + public List Players { get; set; } + public List Games { get; set; } + public List Maps { get; set; } + public List BestScores { get; set; } + } +} \ No newline at end of file diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index bb07919..11902b0 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; using Models.Events; using Models.Exceptions; +using Models.Interfaces; using Models.Rules; namespace Models.Game @@ -16,6 +17,15 @@ namespace Models.Game /// public class Game { + /* Persistence */ + public IPersistence PersistenceManager { get; set; } + + /* List for the game and persistence */ + public List Players { get; set; } + public List Games { get; set; } + public List Maps { get; set; } + public List BestScores { get; set; } + private bool _isRunning; public Player CurrentPlayer { get; private set; } @@ -36,6 +46,61 @@ namespace Models.Game public event EventHandler DiceRolled; public event EventHandler OperationChosen; public event EventHandler CellChosen; + + public void AddPlayer(Player player) + { + Players.Add(player); + } + + public void AddGame(Game game) + { + Games.Add(game); + } + + public void AddMap(Map map) + { + Maps.Add(map); + } + + public void AddBestScore(BestScore bestScore) + { + BestScores.Add(bestScore); + } + + public void LoadData() + { + var data = PersistenceManager.LoadData(); + foreach (var player in data.Item1) + { + Players.Add(player); + } + foreach (var game in data.Item2) + { + Games.Add(game); + } + foreach (var map in data.Item3) + { + Maps.Add(map); + } + foreach (var bestScore in data.Item4) + { + BestScores.Add(bestScore); + } + } + + public void SaveData() => PersistenceManager.SaveData(Players, Games, Maps, BestScores); + + public Game(IPersistence persistenceManager) + { + PersistenceManager = persistenceManager; + + Players = new List(); + Games = new List(); + Maps = new List(); + BestScores = new List(); + + _isRunning = false; + } ///