// Not copied when making a move (will be recomputed anyhow)
Key key;
Bitboard checkersBB;
- Piece capturedPiece;
+ Piece unpromotedCapturedPiece;
+ Piece unpromotedBycatch[SQUARE_NB];
+ Bitboard promotedBycatch;
+ Bitboard demotedBycatch;
StateInfo* previous;
Bitboard blockersForKing[COLOR_NB];
Bitboard pinners[COLOR_NB];
Bitboard checkSquares[PIECE_TYPE_NB];
+ Piece capturedPiece;
+ Bitboard nonSlidingRiders;
+ Bitboard flippedPieces;
+ Bitboard pseudoRoyals;
+ OptBool legalCapture;
+ bool capturedpromoted;
+ bool shak;
+ bool bikjang;
+ bool pass;
+ Move move;
int repetition;
// Used by NNUE
int gamePly;
Color sideToMove;
Score psq;
- Thread* thisThread;
- StateInfo* st;
+
+ // variant-specific
+ const Variant* var;
+ bool tsumeMode;
bool chess960;
+ int pieceCountInHand[COLOR_NB][PIECE_TYPE_NB];
+ Bitboard promotedPieces;
+ void add_to_hand(Piece pc);
+ void remove_from_hand(Piece pc);
+ void drop_piece(Piece pc_hand, Piece pc_drop, Square s);
+ void undrop_piece(Piece pc_hand, Square s);
};
extern std::ostream& operator<<(std::ostream& os, const Position& pos);