public IList<ValidationError> ValidateMove(Game game, Enums.PlayerType owner, BoardPosition boardPosition) { var warnings = new List<ValidationError>(); var isMoveLegitimate = _moveValidationSpecification.IsMoveValid(game, owner, boardPosition); if(!isMoveLegitimate) warnings.Add(new ValidationError { Type = "InvalidMove", Message = "Sorry this move is not legal, try another move to keep playing." }); return warnings; }
public Game CreateNew(RepositoryDelegates.SaveGame saveGame) { var game = new Game { Id = Guid.NewGuid(), Moves = new List<GameMove>() }; saveGame(game); return game; }
public Game Build() { var game = new Game { Id = _id, Moves = _moves ?? new List<GameMove>(), IsGameOver = _isGameOver }; return game; }
public Game BuildWithPossibleWinningMove() { var moves = new List<GameMove> { new GameMove { Owner = Enums.PlayerType.Human, Position = BoardPosition.CreateFrom("A", 1) }, new GameMove { Owner = Enums.PlayerType.Computer, Position = BoardPosition.CreateFrom("B", 1) }, new GameMove { Owner = Enums.PlayerType.Human, Position = BoardPosition.CreateFrom("A", 2) } }; var game = new Game { Id = _id, Moves = moves, IsGameOver = _isGameOver }; return game; }
public void AssignGameStatus(Game game, RepositoryDelegates.SaveGame saveGame) { var isGameOver = _gameStatusSpecifications.IsGameOver(game); game.IsGameOver = isGameOver; saveGame(game); }
public void AssignMove(Game game, GameMove gameMove, RepositoryDelegates.SaveGame saveGame) { game.AddMove(gameMove); saveGame(game); }
public void AssignMove(Game game, Enums.PlayerType owner, BoardPosition boardPosition, RepositoryDelegates.SaveGame saveGame) { var gameMove = _gameFactory.CreateFrom(owner, boardPosition); AssignMove(game, gameMove, saveGame); }
public bool IsFirstTurnForComputer(Game game) { return game.Moves.All(m => m.Owner != Enums.PlayerType.Computer); }
public void Save(Game game) { var cacheKey = getCacheKeyForGame(game.Id); _cacheDataStorage.Add(cacheKey, game); }
public void Remove(Game game) { var cacheKey = getCacheKeyForGame(game.Id); _cacheDataStorage.Remove(cacheKey); }