public static LudoEngine Load(string name, LudoDbContext context) { try { // Find the game in the database using name var gameEntity = context.Games.Include(g => g.NextToRollDice).Include(g => g.Winner).Where(g => g.Name == name).Single(); LudoEngine game = CreateGameFromEntity(gameEntity, context); // Get all the players in the game var gameMemberEntities = context.GameMembers.Include(gm => gm.Piece).Where(gm => gm.GameId == gameEntity.GameId).ToList(); // Setup a player object for each member in the game foreach (var gameMemberEntity in gameMemberEntities) { var pieceEntity = context.Pieces.Where(p => p.PieceId == gameMemberEntity.Piece.PieceId).Single(); var pieceType = GetPieceTypeFromColor(pieceEntity.Color); var user = CreatePlayerFromGameMember(gameMemberEntity, pieceType, gameEntity, context); game.Players.Add(user); } return(game); }catch { return(null); } }
private static LudoEngine CreateGameFromEntity(Game gameEntity, LudoDbContext context) { // Instantiate a new game and set the needed properties to values from the gameEntity LudoEngine game = new LudoEngine(context); game.gameName = gameEntity.Name; game.CurrentPlayer = gameEntity.NextToRollDice; game.game = gameEntity; game.Winner = gameEntity.Winner; return(game); }