attacks function

SquareSet attacks(
  1. Piece piece,
  2. Square square,
  3. SquareSet occupied
)

Gets squares attacked or defended by a piece on square, given occupied squares.

Implementation

SquareSet attacks(Piece piece, Square square, SquareSet occupied) {
  switch (piece.role) {
    case Role.pawn:
      return pawnAttacks(piece.color, square);
    case Role.knight:
      return knightAttacks(square);
    case Role.bishop:
      return bishopAttacks(square, occupied);
    case Role.rook:
      return rookAttacks(square, occupied);
    case Role.queen:
      return queenAttacks(square, occupied);
    case Role.king:
      return kingAttacks(square);
  }
}