- if (pos.can_castle_kingside(us))
- {
- Square rsq = pos.initial_kr_square(us);
- Square g1 = relative_square(us, SQ_G1);
- Square f1 = relative_square(us, SQ_F1);
- Square s;
- bool illegal = false;
-
- assert(pos.piece_on(rsq) == rook_of_color(us));
-
- for (s = Min(ksq, g1); s <= Max(ksq, g1); s++)
- if ( (s != ksq && s != rsq && pos.square_is_occupied(s))
- || pos.square_is_attacked(s, them))
- illegal = true;
-
- for (s = Min(rsq, f1); s <= Max(rsq, f1); s++)
- if (s != ksq && s != rsq && pos.square_is_occupied(s))
- illegal = true;
-
- if (!illegal)
- mlist[n++].move = make_castle_move(ksq, rsq);
- }
-
- if (pos.can_castle_queenside(us))
- {
- Square rsq = pos.initial_qr_square(us);
- Square c1 = relative_square(us, SQ_C1);
- Square d1 = relative_square(us, SQ_D1);
- Square s;
- bool illegal = false;
+ Square rsq = (Side == KING_SIDE ? pos.initial_kr_square(us) : pos.initial_qr_square(us));
+ Square s1 = relative_square(us, Side == KING_SIDE ? SQ_G1 : SQ_C1);
+ Square s2 = relative_square(us, Side == KING_SIDE ? SQ_F1 : SQ_D1);
+ Square s;
+ bool illegal = false;