internal static void AddRookMoves(Position position, List <Move> allMoves) { Board board = position.Board; Side sideToMove = position.SideToMove; Bitboard rooks = board[sideToMove, Piece.Rook]; int[] rookSources = rooks.Serialize(); for (int i = 0; i < rookSources.Length; i++) { Square from = (Square)rookSources[i]; Bitboard attacks = SlidingPieceMoves.RookAttacks(from, board.OccupiedSquares); AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves); } }
internal static void AddQueenMoves(Position position, List <Move> allMoves) { Board board = position.Board; Side sideToMove = position.SideToMove; Bitboard queens = board[sideToMove, Piece.Queen]; int[] queenSources = queens.Serialize(); for (int i = 0; i < queenSources.Length; i++) { Square from = (Square)queenSources[i]; Bitboard attacks = SlidingPieceMoves.QueenAttacks(from, board.OccupiedSquares); AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves); } }
internal static void AddBishopMoves(Position position, List <Move> allMoves) { Board board = position.Board; Side sideToMove = position.SideToMove; Bitboard bishops = board[sideToMove, Piece.Bishop]; int[] bishopSources = bishops.Serialize(); for (int i = 0; i < bishopSources.Length; i++) { Square from = (Square)bishopSources[i]; Bitboard attacks = SlidingPieceMoves.BishopAttacks(from, board.OccupiedSquares); AddMovesFromAttacks(attacks, from, sideToMove, board, allMoves); } }