pinned = pos.pinned_pieces(pos.side_to_move());
dcCandidates = pos.discovered_check_candidates();
- checkSq[PAWN] = pos.attacks_from<PAWN>(ksq, them);
- checkSq[KNIGHT] = pos.attacks_from<KNIGHT>(ksq);
- checkSq[BISHOP] = pos.attacks_from<BISHOP>(ksq);
- checkSq[ROOK] = pos.attacks_from<ROOK>(ksq);
- checkSq[QUEEN] = checkSq[BISHOP] | checkSq[ROOK];
- checkSq[KING] = 0;
+ checkSquares[PAWN] = pos.attacks_from<PAWN>(ksq, them);
+ checkSquares[KNIGHT] = pos.attacks_from<KNIGHT>(ksq);
+ checkSquares[BISHOP] = pos.attacks_from<BISHOP>(ksq);
+ checkSquares[ROOK] = pos.attacks_from<ROOK>(ksq);
+ checkSquares[QUEEN] = checkSquares[BISHOP] | checkSquares[ROOK];
+ checkSquares[KING] = 0;
}
{
Square rsq;
Color c = islower(token) ? BLACK : WHITE;
+ Piece rook = make_piece(c, ROOK);
token = char(toupper(token));
if (token == 'K')
- for (rsq = relative_square(c, SQ_H1); type_of(piece_on(rsq)) != ROOK; --rsq) {}
+ for (rsq = relative_square(c, SQ_H1); piece_on(rsq) != rook; --rsq) {}
else if (token == 'Q')
- for (rsq = relative_square(c, SQ_A1); type_of(piece_on(rsq)) != ROOK; ++rsq) {}
+ for (rsq = relative_square(c, SQ_A1); piece_on(rsq) != rook; ++rsq) {}
else if (token >= 'A' && token <= 'H')
rsq = make_square(File(token - 'A'), relative_rank(c, RANK_1));
Square to = to_sq(m);
// Is there a direct check?
- if (ci.checkSq[type_of(piece_on(from))] & to)
+ if (ci.checkSquares[type_of(piece_on(from))] & to)
return true;
// Is there a discovered check?