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