1 #ifndef OSL_SAFE_DROP_MAJOR_PIECE_H
2 #define OSL_SAFE_DROP_MAJOR_PIECE_H
9 namespace move_generator
14 template <
class Action>
15 static void generate(
const NumEffectState& state, Action& action)
17 const bool has_bishop = state.template hasPieceOnStand<BISHOP>(P);
18 const bool has_rook = state.template hasPieceOnStand<ROOK>(P);
20 if (!has_rook && !has_bishop)
28 for (
int x = 1; x <= 9; x++)
30 for (
int y = start_y; y < start_y + 3; y++)
33 if (state.pieceOnBoard(position).isEmpty()
34 && !state.hasEffectAt(
alt(P), position))
38 action.dropMove(position,
ROOK, P);
42 action.dropMove(position,
BISHOP, P);
48 template <
size_t Capacity>
50 FixedCapacityVector<Move,Capacity>&
out)