X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.cpp;h=efac40b328a647414f64bb661da106fe023c59ea;hp=ded3dd172d735ac8a8870305d6b5bddcbab8222e;hb=201e8d5f87a2bbd2d199b744cf8e92213c1e4bc4;hpb=47f5560e2dccfad9aa64afc7a002ce049b7504d3 diff --git a/src/position.cpp b/src/position.cpp index ded3dd17..efac40b3 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -521,16 +521,24 @@ Bitboard Position::attacks_from(Piece p, Square s) const { switch (p) { - case WP: return attacks_from(s, WHITE); - case BP: return attacks_from(s, BLACK); - case WN: case BN: return attacks_from(s); case WB: case BB: return attacks_from(s); case WR: case BR: return attacks_from(s); case WQ: case BQ: return attacks_from(s); - case WK: case BK: return attacks_from(s); - default: break; + default: return StepAttackBB[p][s]; + } +} + +Bitboard Position::attacks_from(Piece p, Square s, Bitboard occ) { + + assert(square_is_ok(s)); + + switch (p) + { + case WB: case BB: return bishop_attacks_bb(s, occ); + case WR: case BR: return rook_attacks_bb(s, occ); + case WQ: case BQ: return bishop_attacks_bb(s, occ) | rook_attacks_bb(s, occ); + default: return StepAttackBB[p][s]; } - return false; }