Remove pointers, add BoardState
This commit is contained in:
19
Board.hpp
19
Board.hpp
@@ -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
|
||||
|
Reference in New Issue
Block a user