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 ResetBoardState(bool clearStack = true) { ClearAllMoves(); _selectedPiece = null; _playerSwitchSystem.SwitchToPlayer(_gameInfo.ColorToMove); if (clearStack) { ClearFenStack(); } _eventAggregator.GetEvent <RefreshTableEvent>().Publish(_gameInfo); }