mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Change piece_attacks_square() API
An extra argument let us simplify some code. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
9f5b709db7
commit
7013efce4e
4 changed files with 6 additions and 19 deletions
|
@ -539,7 +539,7 @@ bool move_is_legal(const Position& pos, const Move m, Bitboard pinned) {
|
|||
}
|
||||
|
||||
// Luckly we can handle all the other pieces in one go
|
||||
return ( pos.piece_attacks_square(from, to)
|
||||
return ( pos.piece_attacks_square(pos.piece_on(from), from, to)
|
||||
&& pos.pl_move_is_legal(m, pinned)
|
||||
&& !move_promotion(m));
|
||||
}
|
||||
|
|
|
@ -399,12 +399,12 @@ Bitboard Position::attacks_to(Square s) const {
|
|||
/// Position::piece_attacks_square() tests whether the piece on square f
|
||||
/// attacks square t.
|
||||
|
||||
bool Position::piece_attacks_square(Square f, Square t) const {
|
||||
bool Position::piece_attacks_square(Piece p, Square f, Square t) const {
|
||||
|
||||
assert(square_is_ok(f));
|
||||
assert(square_is_ok(t));
|
||||
|
||||
switch (piece_on(f))
|
||||
switch (p)
|
||||
{
|
||||
case WP: return pawn_attacks_square(WHITE, f, t);
|
||||
case BP: return pawn_attacks_square(BLACK, f, t);
|
||||
|
@ -427,24 +427,11 @@ bool Position::move_attacks_square(Move m, Square s) const {
|
|||
assert(move_is_ok(m));
|
||||
assert(square_is_ok(s));
|
||||
|
||||
bool is_attack;
|
||||
Square f = move_from(m), t = move_to(m);
|
||||
|
||||
assert(square_is_occupied(f));
|
||||
|
||||
switch (piece_on(f))
|
||||
{
|
||||
case WP: is_attack = pawn_attacks_square(WHITE, t, s); break;
|
||||
case BP: is_attack = pawn_attacks_square(BLACK, t, s); break;
|
||||
case WN: case BN: is_attack = piece_attacks_square<KNIGHT>(t, s); break;
|
||||
case WB: case BB: is_attack = piece_attacks_square<BISHOP>(t, s); break;
|
||||
case WR: case BR: is_attack = piece_attacks_square<ROOK>(t, s); break;
|
||||
case WQ: case BQ: is_attack = piece_attacks_square<QUEEN>(t, s); break;
|
||||
case WK: case BK: is_attack = piece_attacks_square<KING>(t, s); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (is_attack)
|
||||
if (piece_attacks_square(piece_on(f), t, s))
|
||||
return true;
|
||||
|
||||
// Move the piece and scan for X-ray attacks behind it
|
||||
|
|
|
@ -215,7 +215,7 @@ public:
|
|||
template<PieceType>
|
||||
Bitboard piece_attacks_square(Square f, Square t) const; // Dispatch at compile-time
|
||||
|
||||
bool piece_attacks_square(Square f, Square t) const; // Dispatch at run-time
|
||||
bool piece_attacks_square(Piece p, Square f, Square t) const; // Dispatch at run-time
|
||||
|
||||
// Properties of moves
|
||||
bool pl_move_is_legal(Move m) const;
|
||||
|
|
|
@ -2113,7 +2113,7 @@ namespace {
|
|||
|
||||
// Case 4: The destination square for m2 is attacked by the moving piece
|
||||
// in m1:
|
||||
if(pos.piece_attacks_square(t1, t2))
|
||||
if(pos.piece_attacks_square(pos.piece_on(t1), t1, t2))
|
||||
return true;
|
||||
|
||||
// Case 5: Discovered check, checking piece is the piece moved in m1:
|
||||
|
|
Loading…
Add table
Reference in a new issue