X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=154e69e2207dc504c718050d310254cd9f880da0;hp=86ab7ac4d1e007067ae21865b50dd4ba4c461264;hb=68885f78f39c2d4b96d3a9b0dbf8f31ba12e50bf;hpb=fc3ea7365ad95ec1da05ac559e4e659cf8a7f0f9 diff --git a/src/movegen.cpp b/src/movegen.cpp index 86ab7ac4..154e69e2 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -32,27 +32,20 @@ (*mlist++).move = make_move(to - (d), to); } namespace { - enum CastlingSide { KING_SIDE, QUEEN_SIDE }; - template MoveStack* generate_castle(const Position& pos, MoveStack* mlist, Color us) { - const CastleRight CR[] = { Side ? WHITE_OOO : WHITE_OO, - Side ? BLACK_OOO : BLACK_OO }; - - if (pos.castle_impeded(CR[us]) || !pos.can_castle(CR[us])) + if (pos.castle_impeded(us, Side) || !pos.can_castle(make_castle_right(us, Side))) return mlist; // After castling, the rook and king final positions are the same in Chess960 // as they would be in standard chess. Square kfrom = pos.king_square(us); - Square rfrom = pos.castle_rook_square(CR[us]); + Square rfrom = pos.castle_rook_square(us, Side); Square kto = relative_square(us, Side == KING_SIDE ? SQ_G1 : SQ_C1); Bitboard enemies = pos.pieces(~us); assert(!pos.in_check()); - assert(pos.piece_on(kfrom) == make_piece(us, KING)); - assert(pos.piece_on(rfrom) == make_piece(us, ROOK)); for (Square s = std::min(kfrom, kto), e = std::max(kfrom, kto); s <= e; s++) if ( s != kfrom // We are not in check