X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fposition.cpp;h=f3eb76f82c9932dbc637eb6c673f23b055682d93;hb=76a0d3c05ac84cd2016ba304f6d5290d04450bec;hp=599350888d86cca9243a081334b5fd48b3911d1b;hpb=52cab06fff5b84ecc252fb9d4137f8d92ab8dddf;p=stockfish diff --git a/src/position.cpp b/src/position.cpp index 59935088..f3eb76f8 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1052,30 +1052,24 @@ void Position::do_castle_move(Move m) { assert(is_ok(m)); assert(type_of(m) == CASTLE); - Square kto, kfrom, rfrom, rto, kAfter, rAfter; - Color us = sideToMove; - Square kBefore = from_sq(m); - Square rBefore = to_sq(m); + Square kfrom, kto, rfrom, rto; + + bool kingSide = to_sq(m) > from_sq(m); + kfrom = kto = from_sq(m); + rfrom = rto = to_sq(m); - // Find after-castle squares for king and rook - if (rBefore > kBefore) // O-O + if (Do) { - kAfter = relative_square(us, SQ_G1); - rAfter = relative_square(us, SQ_F1); + kto = relative_square(us, kingSide ? SQ_G1 : SQ_C1); + rto = relative_square(us, kingSide ? SQ_F1 : SQ_D1); } - else // O-O-O + else { - kAfter = relative_square(us, SQ_C1); - rAfter = relative_square(us, SQ_D1); + kfrom = relative_square(us, kingSide ? SQ_G1 : SQ_C1); + rfrom = relative_square(us, kingSide ? SQ_F1 : SQ_D1); } - kfrom = Do ? kBefore : kAfter; - rfrom = Do ? rBefore : rAfter; - - kto = Do ? kAfter : kBefore; - rto = Do ? rAfter : rBefore; - assert(piece_on(kfrom) == make_piece(us, KING)); assert(piece_on(rfrom) == make_piece(us, ROOK));