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); }
private void InitializePlayersAndPieces() { _pieces = _pieceFactory.GetAllPieces(); _pieces.ForEach(p => p.PieceMoving += OnPieceMoving); var whitePlayer = new HumanPlayer(_pieces.Where(p => p.Color == Infrastructure.Enums.PieceColor.White), 1); var blackPlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == Infrastructure.Enums.PieceColor.Black), 2); _players = new IPlayer[] { whitePlayer, blackPlayer }; }