Beispiel #1
0
 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));
 }
Beispiel #2
0
        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);
        }