diff --git a/Qwirkle/Files/Game.xml b/Qwirkle/Files/Game.xml
new file mode 100644
index 0000000..3909ecb
--- /dev/null
+++ b/Qwirkle/Files/Game.xml
@@ -0,0 +1,1550 @@
+
+ true
+
+
+
+ Red
+ Square
+
+
+ Blue
+ Square
+
+
+ Green
+ Square
+
+
+ Yellow
+ Square
+
+
+ Orange
+ Square
+
+
+ Purple
+ Square
+
+
+ Red
+ Round
+
+
+ Blue
+ Round
+
+
+ Green
+ Round
+
+
+ Orange
+ Round
+
+
+ Purple
+ Round
+
+
+ Green
+ Rhombus
+
+
+ Yellow
+ Rhombus
+
+
+ Purple
+ Rhombus
+
+
+ Red
+ Club
+
+
+ Blue
+ Club
+
+
+ Green
+ Club
+
+
+ Yellow
+ Club
+
+
+ Purple
+ Club
+
+
+ Red
+ Shuriken
+
+
+ Blue
+ Shuriken
+
+
+ Green
+ Shuriken
+
+
+ Purple
+ Shuriken
+
+
+ Red
+ Star
+
+
+ Blue
+ Star
+
+
+ Green
+ Star
+
+
+ Yellow
+ Star
+
+
+ Orange
+ Star
+
+
+ Purple
+ Star
+
+
+ Red
+ Square
+
+
+ Blue
+ Square
+
+
+ Green
+ Square
+
+
+ Yellow
+ Square
+
+
+ Blue
+ Round
+
+
+ Purple
+ Round
+
+
+ Red
+ Rhombus
+
+
+ Green
+ Rhombus
+
+
+ Yellow
+ Rhombus
+
+
+ Purple
+ Rhombus
+
+
+ Blue
+ Club
+
+
+ Green
+ Club
+
+
+ Yellow
+ Club
+
+
+ Purple
+ Club
+
+
+ Red
+ Shuriken
+
+
+ Green
+ Shuriken
+
+
+ Yellow
+ Shuriken
+
+
+ Orange
+ Shuriken
+
+
+ Purple
+ Shuriken
+
+
+ Red
+ Star
+
+
+ Blue
+ Star
+
+
+ Orange
+ Star
+
+
+ Purple
+ Star
+
+
+ Red
+ Square
+
+
+ Blue
+ Square
+
+
+ Yellow
+ Square
+
+
+ Orange
+ Square
+
+
+ Purple
+ Square
+
+
+ Blue
+ Round
+
+
+ Green
+ Round
+
+
+ Yellow
+ Round
+
+
+ Purple
+ Round
+
+
+ Red
+ Rhombus
+
+
+ Blue
+ Rhombus
+
+
+ Green
+ Rhombus
+
+
+ Yellow
+ Rhombus
+
+
+ Orange
+ Rhombus
+
+
+ Purple
+ Rhombus
+
+
+ Red
+ Club
+
+
+ Blue
+ Club
+
+
+ Green
+ Club
+
+
+ Yellow
+ Club
+
+
+ Orange
+ Club
+
+
+ Purple
+ Club
+
+
+ Red
+ Shuriken
+
+
+ Blue
+ Shuriken
+
+
+ Green
+ Shuriken
+
+
+ Yellow
+ Shuriken
+
+
+ Orange
+ Shuriken
+
+
+ Purple
+ Shuriken
+
+
+ Red
+ Star
+
+
+ Green
+ Star
+
+
+ Yellow
+ Star
+
+
+ Orange
+ Star
+
+
+ Purple
+ Star
+
+
+ Orange
+ Round
+
+
+ Orange
+ Club
+
+
+ Red
+ Round
+
+
+
+
+ 15
+ 12
+
+
+
+ Blue
+ Rhombus
+
+ 0
+ 0
+
+
+
+ 0
+ 1
+
+
+
+ Orange
+ Round
+
+ 0
+ 2
+
+
+
+ Yellow
+ Round
+
+ 0
+ 3
+
+
+
+ Red
+ Round
+
+ 0
+ 4
+
+
+
+ 0
+ 5
+
+
+
+ 0
+ 6
+
+
+
+ 0
+ 7
+
+
+
+ 0
+ 8
+
+
+
+ 0
+ 9
+
+
+
+ 0
+ 10
+
+
+
+ 0
+ 11
+
+
+
+ 0
+ 12
+
+
+
+ 0
+ 13
+
+
+
+ 0
+ 14
+
+
+
+ Red
+ Rhombus
+
+ 1
+ 0
+
+
+
+ Blue
+ Rhombus
+
+ 1
+ 1
+
+
+
+ Orange
+ Rhombus
+
+ 1
+ 2
+
+
+
+ 1
+ 3
+
+
+
+ 1
+ 4
+
+
+
+ 1
+ 5
+
+
+
+ 1
+ 6
+
+
+
+ 1
+ 7
+
+
+
+ 1
+ 8
+
+
+
+ 1
+ 9
+
+
+
+ 1
+ 10
+
+
+
+ 1
+ 11
+
+
+
+ 1
+ 12
+
+
+
+ 1
+ 13
+
+
+
+ 1
+ 14
+
+
+
+ 2
+ 0
+
+
+
+ Blue
+ Star
+
+ 2
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 2
+ 3
+
+
+
+ 2
+ 4
+
+
+
+ 2
+ 5
+
+
+
+ 2
+ 6
+
+
+
+ 2
+ 7
+
+
+
+ 2
+ 8
+
+
+
+ 2
+ 9
+
+
+
+ 2
+ 10
+
+
+
+ 2
+ 11
+
+
+
+ 2
+ 12
+
+
+
+ 2
+ 13
+
+
+
+ 2
+ 14
+
+
+
+ 3
+ 0
+
+
+
+ Blue
+ Shuriken
+
+ 3
+ 1
+
+
+
+ 3
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 3
+ 4
+
+
+
+ 3
+ 5
+
+
+
+ 3
+ 6
+
+
+
+ 3
+ 7
+
+
+
+ 3
+ 8
+
+
+
+ 3
+ 9
+
+
+
+ 3
+ 10
+
+
+
+ 3
+ 11
+
+
+
+ 3
+ 12
+
+
+
+ 3
+ 13
+
+
+
+ 3
+ 14
+
+
+
+ 4
+ 0
+
+
+
+ 4
+ 1
+
+
+
+ 4
+ 2
+
+
+
+ 4
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 4
+ 5
+
+
+
+ 4
+ 6
+
+
+
+ 4
+ 7
+
+
+
+ 4
+ 8
+
+
+
+ 4
+ 9
+
+
+
+ 4
+ 10
+
+
+
+ 4
+ 11
+
+
+
+ 4
+ 12
+
+
+
+ 4
+ 13
+
+
+
+ 4
+ 14
+
+
+
+ 5
+ 0
+
+
+
+ 5
+ 1
+
+
+
+ 5
+ 2
+
+
+
+ 5
+ 3
+
+
+
+ 5
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ 5
+ 6
+
+
+
+ 5
+ 7
+
+
+
+ 5
+ 8
+
+
+
+ 5
+ 9
+
+
+
+ 5
+ 10
+
+
+
+ 5
+ 11
+
+
+
+ 5
+ 12
+
+
+
+ 5
+ 13
+
+
+
+ 5
+ 14
+
+
+
+ 6
+ 0
+
+
+
+ 6
+ 1
+
+
+
+ 6
+ 2
+
+
+
+ 6
+ 3
+
+
+
+ 6
+ 4
+
+
+
+ 6
+ 5
+
+
+
+ 6
+ 6
+
+
+
+ 6
+ 7
+
+
+
+ 6
+ 8
+
+
+
+ 6
+ 9
+
+
+
+ 6
+ 10
+
+
+
+ 6
+ 11
+
+
+
+ 6
+ 12
+
+
+
+ 6
+ 13
+
+
+
+ 6
+ 14
+
+
+
+ 7
+ 0
+
+
+
+ 7
+ 1
+
+
+
+ 7
+ 2
+
+
+
+ 7
+ 3
+
+
+
+ 7
+ 4
+
+
+
+ 7
+ 5
+
+
+
+ 7
+ 6
+
+
+
+ 7
+ 7
+
+
+
+ 7
+ 8
+
+
+
+ 7
+ 9
+
+
+
+ 7
+ 10
+
+
+
+ 7
+ 11
+
+
+
+ 7
+ 12
+
+
+
+ 7
+ 13
+
+
+
+ 7
+ 14
+
+
+
+ 8
+ 0
+
+
+
+ 8
+ 1
+
+
+
+ 8
+ 2
+
+
+
+ 8
+ 3
+
+
+
+ 8
+ 4
+
+
+
+ 8
+ 5
+
+
+
+ 8
+ 6
+
+
+
+ 8
+ 7
+
+
+
+ 8
+ 8
+
+
+
+ 8
+ 9
+
+
+
+ 8
+ 10
+
+
+
+ 8
+ 11
+
+
+
+ 8
+ 12
+
+
+
+ 8
+ 13
+
+
+
+ 8
+ 14
+
+
+
+ 9
+ 0
+
+
+
+ 9
+ 1
+
+
+
+ 9
+ 2
+
+
+
+ 9
+ 3
+
+
+
+ 9
+ 4
+
+
+
+ 9
+ 5
+
+
+
+ 9
+ 6
+
+
+
+ 9
+ 7
+
+
+
+ 9
+ 8
+
+
+
+ 9
+ 9
+
+
+
+ 9
+ 10
+
+
+
+ 9
+ 11
+
+
+
+ 9
+ 12
+
+
+
+ 9
+ 13
+
+
+
+ 9
+ 14
+
+
+
+ 10
+ 0
+
+
+
+ 10
+ 1
+
+
+
+ 10
+ 2
+
+
+
+ 10
+ 3
+
+
+
+ 10
+ 4
+
+
+
+ 10
+ 5
+
+
+
+ 10
+ 6
+
+
+
+ 10
+ 7
+
+
+
+ 10
+ 8
+
+
+
+ 10
+ 9
+
+
+
+ 10
+ 10
+
+
+
+ 10
+ 11
+
+
+
+ 10
+ 12
+
+
+
+ 10
+ 13
+
+
+
+ 10
+ 14
+
+
+
+ 11
+ 0
+
+
+
+ 11
+ 1
+
+
+
+ 11
+ 2
+
+
+
+ 11
+ 3
+
+
+
+ 11
+ 4
+
+
+
+ 11
+ 5
+
+
+
+ 11
+ 6
+
+
+
+ 11
+ 7
+
+
+
+ 11
+ 8
+
+
+
+ 11
+ 9
+
+
+
+ 11
+ 10
+
+
+
+ 11
+ 11
+
+
+
+ 11
+ 12
+
+
+
+ 11
+ 13
+
+
+
+ 11
+ 14
+
+
+
+
+
+
+ true
+ Jules
+
+
+ Yellow
+ Star
+
+
+ Orange
+ Club
+
+
+ Orange
+ Square
+
+
+ Yellow
+ Round
+
+
+ Orange
+ Rhombus
+
+
+ Green
+ Star
+
+
+
+
+ false
+ Jérémy
+
+
+ Green
+ Square
+
+
+ Purple
+ Square
+
+
+ Red
+ Club
+
+
+ Green
+ Round
+
+
+ Yellow
+ Shuriken
+
+
+ Orange
+ Shuriken
+
+
+
+
+
+
+
+ 8
+
+
+
+ 9
+
+
+
\ No newline at end of file
diff --git a/Qwirkle/Files/game.json b/Qwirkle/Files/game.json
deleted file mode 100644
index 6796780..0000000
--- a/Qwirkle/Files/game.json
+++ /dev/null
@@ -1 +0,0 @@
-{"GameRunning":false,"bag":null,"board":{"Columns":15,"Rows":12,"cells":[{"Tile":null,"x":0,"y":0},{"Tile":null,"x":0,"y":1},{"Tile":null,"x":0,"y":2},{"Tile":null,"x":0,"y":3},{"Tile":null,"x":0,"y":4},{"Tile":null,"x":0,"y":5},{"Tile":null,"x":0,"y":6},{"Tile":null,"x":0,"y":7},{"Tile":null,"x":0,"y":8},{"Tile":null,"x":0,"y":9},{"Tile":null,"x":0,"y":10},{"Tile":null,"x":0,"y":11},{"Tile":null,"x":0,"y":12},{"Tile":null,"x":0,"y":13},{"Tile":null,"x":0,"y":14},{"Tile":null,"x":1,"y":0},{"Tile":null,"x":1,"y":1},{"Tile":null,"x":1,"y":2},{"Tile":null,"x":1,"y":3},{"Tile":null,"x":1,"y":4},{"Tile":null,"x":1,"y":5},{"Tile":null,"x":1,"y":6},{"Tile":null,"x":1,"y":7},{"Tile":null,"x":1,"y":8},{"Tile":null,"x":1,"y":9},{"Tile":null,"x":1,"y":10},{"Tile":null,"x":1,"y":11},{"Tile":null,"x":1,"y":12},{"Tile":null,"x":1,"y":13},{"Tile":null,"x":1,"y":14},{"Tile":null,"x":2,"y":0},{"Tile":null,"x":2,"y":1},{"Tile":null,"x":2,"y":2},{"Tile":null,"x":2,"y":3},{"Tile":null,"x":2,"y":4},{"Tile":null,"x":2,"y":5},{"Tile":null,"x":2,"y":6},{"Tile":null,"x":2,"y":7},{"Tile":null,"x":2,"y":8},{"Tile":null,"x":2,"y":9},{"Tile":null,"x":2,"y":10},{"Tile":null,"x":2,"y":11},{"Tile":null,"x":2,"y":12},{"Tile":null,"x":2,"y":13},{"Tile":null,"x":2,"y":14},{"Tile":null,"x":3,"y":0},{"Tile":null,"x":3,"y":1},{"Tile":null,"x":3,"y":2},{"Tile":null,"x":3,"y":3},{"Tile":null,"x":3,"y":4},{"Tile":null,"x":3,"y":5},{"Tile":null,"x":3,"y":6},{"Tile":null,"x":3,"y":7},{"Tile":null,"x":3,"y":8},{"Tile":null,"x":3,"y":9},{"Tile":null,"x":3,"y":10},{"Tile":null,"x":3,"y":11},{"Tile":null,"x":3,"y":12},{"Tile":null,"x":3,"y":13},{"Tile":null,"x":3,"y":14},{"Tile":null,"x":4,"y":0},{"Tile":null,"x":4,"y":1},{"Tile":null,"x":4,"y":2},{"Tile":null,"x":4,"y":3},{"Tile":null,"x":4,"y":4},{"Tile":null,"x":4,"y":5},{"Tile":null,"x":4,"y":6},{"Tile":null,"x":4,"y":7},{"Tile":null,"x":4,"y":8},{"Tile":null,"x":4,"y":9},{"Tile":null,"x":4,"y":10},{"Tile":null,"x":4,"y":11},{"Tile":null,"x":4,"y":12},{"Tile":null,"x":4,"y":13},{"Tile":null,"x":4,"y":14},{"Tile":null,"x":5,"y":0},{"Tile":null,"x":5,"y":1},{"Tile":null,"x":5,"y":2},{"Tile":null,"x":5,"y":3},{"Tile":null,"x":5,"y":4},{"Tile":null,"x":5,"y":5},{"Tile":null,"x":5,"y":6},{"Tile":null,"x":5,"y":7},{"Tile":null,"x":5,"y":8},{"Tile":null,"x":5,"y":9},{"Tile":null,"x":5,"y":10},{"Tile":null,"x":5,"y":11},{"Tile":null,"x":5,"y":12},{"Tile":null,"x":5,"y":13},{"Tile":null,"x":5,"y":14},{"Tile":null,"x":6,"y":0},{"Tile":null,"x":6,"y":1},{"Tile":null,"x":6,"y":2},{"Tile":null,"x":6,"y":3},{"Tile":null,"x":6,"y":4},{"Tile":null,"x":6,"y":5},{"Tile":null,"x":6,"y":6},{"Tile":null,"x":6,"y":7},{"Tile":null,"x":6,"y":8},{"Tile":null,"x":6,"y":9},{"Tile":null,"x":6,"y":10},{"Tile":null,"x":6,"y":11},{"Tile":null,"x":6,"y":12},{"Tile":null,"x":6,"y":13},{"Tile":null,"x":6,"y":14},{"Tile":null,"x":7,"y":0},{"Tile":null,"x":7,"y":1},{"Tile":null,"x":7,"y":2},{"Tile":null,"x":7,"y":3},{"Tile":null,"x":7,"y":4},{"Tile":null,"x":7,"y":5},{"Tile":null,"x":7,"y":6},{"Tile":null,"x":7,"y":7},{"Tile":null,"x":7,"y":8},{"Tile":null,"x":7,"y":9},{"Tile":null,"x":7,"y":10},{"Tile":null,"x":7,"y":11},{"Tile":null,"x":7,"y":12},{"Tile":null,"x":7,"y":13},{"Tile":null,"x":7,"y":14},{"Tile":null,"x":8,"y":0},{"Tile":null,"x":8,"y":1},{"Tile":null,"x":8,"y":2},{"Tile":null,"x":8,"y":3},{"Tile":null,"x":8,"y":4},{"Tile":null,"x":8,"y":5},{"Tile":null,"x":8,"y":6},{"Tile":null,"x":8,"y":7},{"Tile":null,"x":8,"y":8},{"Tile":null,"x":8,"y":9},{"Tile":null,"x":8,"y":10},{"Tile":null,"x":8,"y":11},{"Tile":null,"x":8,"y":12},{"Tile":null,"x":8,"y":13},{"Tile":null,"x":8,"y":14},{"Tile":null,"x":9,"y":0},{"Tile":null,"x":9,"y":1},{"Tile":null,"x":9,"y":2},{"Tile":null,"x":9,"y":3},{"Tile":null,"x":9,"y":4},{"Tile":null,"x":9,"y":5},{"Tile":null,"x":9,"y":6},{"Tile":null,"x":9,"y":7},{"Tile":null,"x":9,"y":8},{"Tile":null,"x":9,"y":9},{"Tile":null,"x":9,"y":10},{"Tile":null,"x":9,"y":11},{"Tile":null,"x":9,"y":12},{"Tile":null,"x":9,"y":13},{"Tile":null,"x":9,"y":14},{"Tile":null,"x":10,"y":0},{"Tile":null,"x":10,"y":1},{"Tile":null,"x":10,"y":2},{"Tile":null,"x":10,"y":3},{"Tile":null,"x":10,"y":4},{"Tile":null,"x":10,"y":5},{"Tile":null,"x":10,"y":6},{"Tile":null,"x":10,"y":7},{"Tile":null,"x":10,"y":8},{"Tile":null,"x":10,"y":9},{"Tile":null,"x":10,"y":10},{"Tile":null,"x":10,"y":11},{"Tile":null,"x":10,"y":12},{"Tile":null,"x":10,"y":13},{"Tile":null,"x":10,"y":14},{"Tile":null,"x":11,"y":0},{"Tile":null,"x":11,"y":1},{"Tile":null,"x":11,"y":2},{"Tile":null,"x":11,"y":3},{"Tile":null,"x":11,"y":4},{"Tile":null,"x":11,"y":5},{"Tile":null,"x":11,"y":6},{"Tile":null,"x":11,"y":7},{"Tile":null,"x":11,"y":8},{"Tile":null,"x":11,"y":9},{"Tile":null,"x":11,"y":10},{"Tile":null,"x":11,"y":11},{"Tile":null,"x":11,"y":12},{"Tile":null,"x":11,"y":13},{"Tile":null,"x":11,"y":14}]},"cellUsed":[],"players":[],"scoreBoard":[]}
\ No newline at end of file
diff --git a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs
deleted file mode 100644
index 83e409f..0000000
--- a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceJson.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Runtime.Serialization.Json;
-using QwirkleClassLibrary.Games;
-
-namespace QwirkleClassLibrary.Persistences;
-
-public class GamePersistenceJson : IGamePersistence
-{
- public void SaveGame(Game game)
- {
- var serializer = new DataContractJsonSerializer(typeof(Game));
-
- using (Stream writer = File.Create("Game.json"))
- {
- serializer.WriteObject(writer, game);
- }
- }
-
- public Game LoadGame()
- {
- var serializer = new DataContractJsonSerializer(typeof(Game));
-
- using (Stream reader = File.OpenRead("Game.json"))
- {
- return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException();
- }
- }
-}
\ No newline at end of file
diff --git a/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs
new file mode 100644
index 0000000..8325cc2
--- /dev/null
+++ b/Qwirkle/QwirkleClassLibrary/Persistences/GamePersistenceXml.cs
@@ -0,0 +1,28 @@
+using System.Runtime.Serialization;
+using QwirkleClassLibrary.Games;
+
+namespace QwirkleClassLibrary.Persistences;
+
+public class GamePersistenceXml : IGamePersistence
+{
+ public void SaveGame(Game game)
+ {
+ var serializer = new DataContractSerializer(typeof(Game),
+ new DataContractSerializerSettings() { PreserveObjectReferences = true });
+
+ using (Stream writer = File.Create("Game.xml"))
+ {
+ serializer.WriteObject(writer, game);
+ }
+ }
+
+ public Game LoadGame()
+ {
+ var serializer = new DataContractSerializer(typeof(Game));
+
+ using (Stream reader = File.OpenRead("Game.xml"))
+ {
+ return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs b/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs
index a1821e2..fc6381a 100644
--- a/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs
+++ b/Qwirkle/QwirkleClassLibrary/Tiles/TileBag.cs
@@ -11,10 +11,11 @@ namespace QwirkleClassLibrary.Tiles
[DataContract]
public class TileBag
{
- public ReadOnlyCollection TilesBag { get; private set; }
-
[DataMember]
private readonly List tiles = new List();
+
+ public ReadOnlyCollection TilesBag { get; private set; }
+
///
/// This is the constructor for the TileBag. It will create a tile of each of the possibilities among the Color and Shape Enums.
@@ -40,7 +41,7 @@ namespace QwirkleClassLibrary.Tiles
}
}
- TilesBag = tiles.AsReadOnly();
+ Init();
}
///
@@ -69,5 +70,11 @@ namespace QwirkleClassLibrary.Tiles
}
return false;
}
+
+ [OnDeserialized]
+ private void Init(StreamingContext sc = new())
+ {
+ TilesBag = tiles.AsReadOnly();
+ }
}
}
\ No newline at end of file
diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs
index 9f17631..a6224bb 100644
--- a/Qwirkle/QwirkleConsoleApp/Program.cs
+++ b/Qwirkle/QwirkleConsoleApp/Program.cs
@@ -218,12 +218,12 @@ static void MenuSwitch(Game game)
game.DrawTiles(game.GetPlayingPlayer());
game.CheckGameOver(game.GetPlayingPlayer());
- IGamePersistence gameSave = new GamePersistenceJson();
+ IGamePersistence gameSave = new GamePersistenceXml();
gameSave.SaveGame(game);
return;
case 4:
- IGamePersistence endGameSave = new GamePersistenceJson();
+ IGamePersistence endGameSave = new GamePersistenceXml();
endGameSave.SaveGame(game);
game.GameRunning = false;
@@ -289,6 +289,27 @@ static void ShowLeaderboard(Leaderboard leaderboard)
WriteLine();
}
+static void GameLoop(Game game)
+{
+ NotificationClass nc = new NotificationClass();
+
+ do
+ {
+ game.NextPlayerNotified += nc.NotificationNextPlayer;
+ game.EndOfGameNotified += nc.NotificationEndOfGame;
+
+ game.SetNextPlayer();
+
+ WriteLine(" --------------------- GAME ! ------------------------");
+
+ MenuSwitch(game);
+
+ game.NextPlayerNotified -= nc.NotificationNextPlayer;
+ game.EndOfGameNotified -= nc.NotificationEndOfGame;
+
+ } while (game.GameRunning);
+}
+
static void MainMenu(Game game)
{
game.GiveTilesToPlayers();
@@ -326,24 +347,14 @@ static void MainMenuContinue(Game game)
ForegroundColor = ConsoleColor.Green;
WriteLine("Game loaded ! You can continue the game !");
ResetColor();
-
- NotificationClass nc = new NotificationClass();
-
- do
- {
- game.NextPlayerNotified += nc.NotificationNextPlayer;
- game.EndOfGameNotified += nc.NotificationEndOfGame;
- game.SetNextPlayer();
-
- WriteLine(" --------------------- GAME ! ------------------------");
+ NotificationClass nc = new NotificationClass();
- MenuSwitch(game);
+ WriteLine(" --------------------- GAME ! ------------------------");
- game.NextPlayerNotified -= nc.NotificationNextPlayer;
- game.EndOfGameNotified -= nc.NotificationEndOfGame;
+ MenuSwitch(game);
- } while (game.GameRunning);
+ GameLoop(game);
}
static void MainGame()
@@ -411,7 +422,7 @@ static void MainGame()
case 2:
Game loadedGame;
- IGamePersistence gameLoad = new GamePersistenceJson();
+ IGamePersistence gameLoad = new GamePersistenceXml();
loadedGame = gameLoad.LoadGame();
ILeaderboardPersistence leaderboardLoad = new LeaderboardPersistenceJson();
diff --git a/Qwirkle/TestBase/TestPersistence.cs b/Qwirkle/TestBase/TestPersistence.cs
index 8894bf7..cf29910 100644
--- a/Qwirkle/TestBase/TestPersistence.cs
+++ b/Qwirkle/TestBase/TestPersistence.cs
@@ -13,10 +13,10 @@ namespace TestBase
{
var game = new Game();
- var gamePersistence = new GamePersistenceJson();
+ var gamePersistence = new GamePersistenceXml();
gamePersistence.SaveGame(game);
- Assert.True(File.Exists("Game.json"));
+ Assert.True(File.Exists("Game.xml"));
}
[Fact]
@@ -29,7 +29,7 @@ namespace TestBase
game.AddPlayerInGame(["Jules", "Jérémy"]);
game.StartGame();
- var gamePersistence = new GamePersistenceJson();
+ var gamePersistence = new GamePersistenceXml();
gamePersistence.SaveGame(game);
var loadedGame = gamePersistence.LoadGame();