diff options
Diffstat (limited to 'src/engine/moves/king.c')
| -rw-r--r-- | src/engine/moves/king.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/engine/moves/king.c b/src/engine/moves/king.c index 29bca79..e954ae5 100644 --- a/src/engine/moves/king.c +++ b/src/engine/moves/king.c @@ -7,11 +7,14 @@ void get_king_moves(moves_t* moves, position_t position) { bitboard_t friendly_king; int king_square; bitboard_t friendly_pieces; + bitboard_t enemy_pieces; if (position.turn == WHITE_TURN) { friendly_pieces = whites(position); + enemy_pieces = blacks(position); friendly_king = position.bitboards[WHITE_KING]; } else { friendly_pieces = blacks(position); + enemy_pieces = whites(position); friendly_king = position.bitboards[BLACK_KING]; } king_square = __builtin_ctzll(friendly_king); @@ -32,7 +35,12 @@ void get_king_moves(moves_t* moves, position_t position) { while (movement) { int to = __builtin_ctzll(movement); movement &= movement - 1; - add_move(moves, king_square, to); + add_move( + moves, + king_square, + to, + .flags = ((enemy_pieces >> to) & 1) ? MOVE_CAPTURE : 0, + ); } } |
