Files
cpl_cpp-project/BoardState.hpp
2022-12-23 23:57:29 +01:00

43 lines
1.0 KiB
C++

#ifndef CHESS_ENGINE_BOARDSTATE_HPP
#define CHESS_ENGINE_BOARDSTATE_HPP
#include "Piece.hpp"
#include "BitBoard.hpp"
#include "Board.hpp"
#define BB_NUM 8
struct BoardState {
BoardState(const BitBoard (*const pieceBBs)[8],
const BitBoard occupiedBB,
const PieceColor turn,
const CastlingRights cr,
const std::optional<Square> eps)
: pieceBBs(pieceBBs),
occupiedBB(occupiedBB),
turn(turn),
cr(cr),
eps(eps) {
}
const BitBoard (*const pieceBBs)[8];
const BitBoard occupiedBB;
const PieceColor turn;
const CastlingRights cr;
const std::optional<Square> eps;
inline PieceType pieceType(const BitBoard &mask) const {
for (int i = 2; i < BB_NUM; i++) {
if ((*pieceBBs)[i] & mask) {
return static_cast<PieceType>(i);
}
}
// Should not happen
return static_cast<PieceType>(0);
}
};
#endif //CHESS_ENGINE_BOARDSTATE_HPP