Fixed Persistence exception with unreadable EOF
continuous-integration/drone/push Build is passing Details

test_old_branch
Jules LASCRET 11 months ago
parent 15f0c4e1ef
commit 6501139f45

@ -384,6 +384,12 @@ namespace QwirkleClassLibrary.Games
/// <returns>bool</returns> /// <returns>bool</returns>
public bool SwapTiles(Player player, List<Tile> tilesToSwap) public bool SwapTiles(Player player, List<Tile> tilesToSwap)
{ {
if (cellUsed.Count != 0)
{
OnSwapTiles(new SwapTilesNotifiedEventArgs("You can't swap tiles after placing some !"));
return false;
}
if (tilesToSwap.Count == 0) if (tilesToSwap.Count == 0)
{ {
OnSwapTiles(new SwapTilesNotifiedEventArgs("You must select at least one tile to swap !")); OnSwapTiles(new SwapTilesNotifiedEventArgs("You must select at least one tile to swap !"));

@ -20,9 +20,17 @@ public class GamePersistenceXml : IGamePersistence
{ {
var serializer = new DataContractSerializer(typeof(Game)); var serializer = new DataContractSerializer(typeof(Game));
using (Stream reader = File.OpenRead("Game.xml")) try
{ {
return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException(); using (Stream reader = File.OpenRead("Game.xml"))
{
var newGame = serializer.ReadObject(reader) as Game;
return newGame!;
}
}
catch
{
return new Game();
} }
} }
} }

@ -1,17 +1,9 @@
using QwirkleClassLibrary.Boards; using QwirkleClassLibrary.Boards;
using QwirkleClassLibrary.Events;
using QwirkleClassLibrary.Games; using QwirkleClassLibrary.Games;
using QwirkleClassLibrary.Players; using QwirkleClassLibrary.Players;
using QwirkleClassLibrary.Tiles; using QwirkleClassLibrary.Tiles;
using QwirkleConsoleApp; using QwirkleConsoleApp;
using System.Collections.Immutable;
using System.Collections.ObjectModel;
using System.Diagnostics.Metrics;
using System.Net.Quic;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text; using System.Text;
using System.Transactions;
using QwirkleClassLibrary.Persistences; using QwirkleClassLibrary.Persistences;
using static System.Console; using static System.Console;
@ -423,12 +415,33 @@ static void MainGame()
Game loadedGame; Game loadedGame;
IGamePersistence gameLoad = new GamePersistenceXml(); IGamePersistence gameLoad = new GamePersistenceXml();
loadedGame = gameLoad.LoadGame();
try
{
loadedGame = gameLoad.LoadGame();
}
catch
{
ForegroundColor = ConsoleColor.Red;
WriteLine("ERROR : No game saved ! Creating a new game !");
ResetColor();
loadedGame = new Game();
}
ILeaderboardPersistence leaderboardLoad = new LeaderboardPersistenceJson(); ILeaderboardPersistence leaderboardLoad = new LeaderboardPersistenceJson();
leaderboard = leaderboardLoad.LoadLeaderboard(); leaderboard = leaderboardLoad.LoadLeaderboard();
MainMenuContinue(loadedGame); if (loadedGame.GameRunning)
{
MainMenuContinue(loadedGame);
}
else
{
AddPlayers(loadedGame);
loadedGame.StartGame();
MainMenu(loadedGame);
}
leaderboard.AddScoreInLead(loadedGame.ScoreBoard); leaderboard.AddScoreInLead(loadedGame.ScoreBoard);
break; break;

Loading…
Cancel
Save