cm10 file + swap event added + fixed tile placing event handling
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
93c9593e2e
commit
c7c4742729
@ -0,0 +1,6 @@
|
|||||||
|
namespace QwirkleClassLibrary.Events;
|
||||||
|
|
||||||
|
public class SwapTilesNotifiedEventArgs(string reason)
|
||||||
|
{
|
||||||
|
public string Reason { get; private set; } = reason;
|
||||||
|
}
|
@ -0,0 +1,122 @@
|
|||||||
|
// ==== 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<Result> Results { get; private set; }
|
||||||
|
private readonly List<Result> results = new List<Result>();
|
||||||
|
|
||||||
|
public ResultsManage()
|
||||||
|
{
|
||||||
|
Results = new ReadOnlyCollection<Result>(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;
|
||||||
|
}
|
Loading…
Reference in new issue