summaryrefslogtreecommitdiff
path: root/src/engine/moves/queen.c
blob: bdf96fc57c33df033ae5ba4a1d5464720325eb2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "moves.h"

void get_queen_moves(moves_t* moves, position_t position) {
  assert_valid_position(position);

  bitboard_t friendly_queens;
  bitboard_t friendly_pieces;
  bitboard_t enemy_pieces;
  if (position.turn == WHITE_TURN) {
    friendly_pieces = whites(position);
    enemy_pieces = blacks(position);
    friendly_queens = position.bitboards[WHITE_QUEEN];
  } else {
    friendly_pieces = blacks(position);
    enemy_pieces = whites(position);
    friendly_queens = position.bitboards[BLACK_QUEEN];
  }
  
  __forloop_rook_moves_gen(
    moves,
    friendly_queens,
    friendly_pieces,
    enemy_pieces
  );
  __forloop_bishop_moves_gen(
    moves,
    friendly_queens,
    friendly_pieces,
    enemy_pieces
  );
}