Remove pointers, add BoardState

This commit is contained in:
2022-12-22 22:54:26 +01:00
parent 71d90918b3
commit 8d028ba087
6 changed files with 146 additions and 73 deletions

View File

@@ -11,7 +11,6 @@
#include <optional>
#include <iosfwd>
#include <vector>
#include <memory>
#define BB_NUM 8 // 6 pieces, 2 colors
@@ -21,7 +20,11 @@ public:
using Optional = std::optional<Board>;
using MoveVec = std::vector<Move>;
Board();
Board() = default;
Board(const Board &) = default;
Board(Board &&other) = default;
Board &operator=(const Board &) = default;
Board &operator=(Board &&) = default;
void setPiece(const Square &square, const Piece::Optional &piece);
Piece::Optional piece(const Square &square) const;
@@ -46,18 +49,15 @@ public:
private:
std::shared_ptr<BitBoard[BB_NUM]> mPieceBBs = std::shared_ptr<BitBoard[BB_NUM]>(new BitBoard[BB_NUM]);
// BitBoard mPieceBBs[BB_NUM] = {};
std::shared_ptr<BitBoard> mOccupiedBB = std::make_shared<BitBoard>(0);
BitBoard mPieceBBs[BB_NUM] = {};
BitBoard mOccupiedBB = BitBoard(0);
std::shared_ptr<MoveGenerator> mMoveGenerator = std::make_shared<MoveGenerator>(mPieceBBs, mOccupiedBB);
PieceColor mTurn = PieceColor::White;
PieceColor mTurn = PieceColor(PieceColor::White);
CastlingRights mCR = CastlingRights::None;
std::optional<Square> mEPS;
void handleCastlingRights(const Piece &piece, const BitBoard &bb);
constexpr bool hasCastlingRights() const;
// Check if the move is castling without checking the rights or validity.
static bool isMoveCastling(const BitBoard &from, const BitBoard &to, const Piece &piece);
@@ -86,5 +86,4 @@ private:
};
std::ostream &operator<<(std::ostream &os, const Board &board);
#endif