public static GameStatus CreateFromEntity(Entity.Game entity, IEnumerable <Player> players) { return(new Model.GameStatus( players.Single(x => x.ID == entity.CurrentPlayerID), players.Single(x => x.ID != entity.CurrentPlayerID), players.FirstOrDefault(x => x.ID == entity.WinnerID), entity.Active, Model.GameMove.Empty, Model.GameMoveResultType.Nothing, null, null)); }
public async Task<Model.Game> CreateAsync(Model.Game game) { var timestamp = DateTime.UtcNow; var model = new Game { Player1ID = game.Player1.ID, Player1Name = game.Player1.Name, Player2ID = game.Player2.ID, Player2Name = game.Player2.Name, SinglePlayerMode = game.Player2.IsComputerControlled, CreatedAtUtc = timestamp, UpdatedAtUtc = timestamp, NumRows = game.GameBoard.NumRows, NumCols = game.GameBoard.NumCols, RowsPerPlayer = game.GameBoard.Properties.RowsPerPlayer, BombsPerPlayer = game.GameBoard.Properties.BombsPerPlayer, CurrentPlayerID = game.Player1.ID, Active = true, Tokens = (from token in game.GameBoard.GetTokens() select new Token { ID = token.ID, PlayerID = token.PlayerID, Row = token.Row, Col = token.Col, TokenType = (int)token.TokenType, CreatedAtUtc = timestamp, UpdatedAtUtc = timestamp }).ToList() }; context.Games.Add(model); await context.SaveChangesAsync(); var players = new[] { game.Player1, game.Player2 }; return new Model.Game(model.ID, game.Player1, game.Player2, Model.GameStatus.CreateFromEntity(model, players), game.GameBoard); }