// ==== Persistance ==== // Enregistrer les meilleurs scores des parties (déjà prévu) // Enregistrer la partie en cours, à chaque coup et/ou quand on veut quitter le jeu (déjà prévu) // Faire un replay de la partie avec 2 joueurs (pas terrible, jeu déjà bien lent) // json(prefered 'cause lighter), binary, text, xml(prefered 'cause cleaner) files [DataContract(Name = "Player")] public class Player { [DataMember(Name = "Name")] public string Name { get; set; } [DataMember(EmitDefaultValue = false)] public int Score { get; set; } public Player(string name, int score) { Name = name; Score = score; } } // Save var serializer = new DataContractSerializer(typeof(Player)); using (Stream s = File.Create("player.xml")) { serializer.WriteObject(s, new Player("John", 42)); } // Load var serializer = new DataContractSerializer(typeof(Player)); using (Stream s = File.OpenRead("player.xml")) { var player = serializer.ReadObject(s) as Player; } // =================== // ===== Example ===== // =================== [DataContract] public class Player { [DataMember] public string Name { get; set; } [DataMember] public int Score { get; set; } public Player(string name, int score) { Name = name; Score = score; } } [DataContract] public class Result { [DataMember] public DateTime Date { get; set; } [DataMember] public Player[] Players { get; set; } [DataMember] public int WinnerId { get; set; } public Result(DateTime date, Player[] players, int winnerId) { Players = new Player[players.Length]; for (int i = 0; i < players.Length; i++) { Players[i] = new Player(players[i].Name, players[i].Score); } Date = date; WinnerId = winnerId; } public Result(Player[] players, int winnerId) : this(DateTime.Now, players, winnerId){} } public class ResultsManage { public ReadOnlyCollection Results { get; private set; } private readonly List results = new List(); public ResultsManage() { Results = new ReadOnlyCollection(results); } public void AddResult(int WinnerId, params Player[] players) { result.Add(new Result(players, WinnerId)); } } Result r = new Result([new Player("John", 42), new Player("Jane", 24)], 24); Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "..\\..\\..\\..")); Directory.CreateDirectory("Files"); DataContractSerializer serializer = new DataContractSerializer(typeof(Result), new DataContractSerializerSettings { PreserveObjectReferences = true }); using (Stream s = File.Create(Path.Combine("Files", "result.xml"))) { serializer.WriteObject(s, r); } using (Stream s2 = File.OpenRead(Path.Combine("Files", "result.xml"))) { Result r2 = serializer.ReadObject(s2) as Result; }