public void ChangePlayers(bool isBlackAI, bool isWhiteAI) { var currentPlayerColor = CurrentPlayer.Color; var blackPlayer = _players.First(p => p.Color == PieceColor.Black); var whitePlayer = _players.First(p => p.Color == PieceColor.White); if (isBlackAI && !blackPlayer.IsAutomatic) { blackPlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == PieceColor.Black), blackPlayer.MoveOrder); } if (!isBlackAI && blackPlayer.IsAutomatic) { blackPlayer = new HumanPlayer(_pieces.Where(p => p.Color == PieceColor.Black), blackPlayer.MoveOrder); } if (isWhiteAI && !whitePlayer.IsAutomatic) { whitePlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == PieceColor.White), whitePlayer.MoveOrder); } if (!isWhiteAI && whitePlayer.IsAutomatic) { whitePlayer = new HumanPlayer(_pieces.Where(p => p.Color == PieceColor.White), whitePlayer.MoveOrder); } _players = new IPlayer[] { whitePlayer, blackPlayer }; _playerSwitchSystem = new PlayerSwitchSystem(_players.GetEnumerator()); _playerSwitchSystem.SwitchToPlayer(currentPlayerColor); _eventAggregator.GetEvent <Chess.Infrastructure.Events.RefreshTableEvent>().Publish(this); }
public void StartNewGame() { _gameInfo = new GameInfo() { Bkca = true, Wkca = true, Bqca = true, Wqca = true, ColorToMove = PieceColor.White, EnPassant = null, FullMoves = 0, HalfMoves = 0 }; Id = Guid.NewGuid().ToString(); InitializePlayersAndPieces(); _playerSwitchSystem = new PlayerSwitchSystem(_players.GetEnumerator()); ResetBoardState(true); }