const bitboard = @import("bitboard.zig"); const generated = @import("generated_magics.zig"); pub const Bitboard = bitboard.Bitboard; pub const Square = bitboard.Square; pub fn rookAttacks(square: Square, all_occ: Bitboard) Bitboard { const info = generated.rook_magic_info[square]; const blockers = all_occ & info.mask; const shift_amount: u6 = @intCast(info.shift); const index: usize = @intCast((blockers *% info.magic) >> shift_amount); return generated.rook_attacks[square][index]; } pub fn bishopAttacks(square: Square, all_occ: Bitboard) Bitboard { const info = generated.bishop_magic_info[square]; const blockers = all_occ & info.mask; const shift_amount: u6 = @intCast(info.shift); const index: usize = @intCast((blockers *% info.magic) >> shift_amount); return generated.bishop_attacks[square][index]; } pub fn queenAttacks(square: Square, all_occ: Bitboard) Bitboard { return rookAttacks(square, all_occ) | bishopAttacks(square, all_occ); }