mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Clean up position setup code
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
1a20d72701
commit
b08ba446f6
3 changed files with 21 additions and 33 deletions
|
@ -205,6 +205,7 @@ void Position::from_fen(const string& fen, bool c960) {
|
|||
*/
|
||||
|
||||
char token;
|
||||
int hmc, fmn;
|
||||
std::istringstream ss(fen);
|
||||
Rank rank = RANK_8;
|
||||
File file = FILE_A;
|
||||
|
@ -265,12 +266,10 @@ void Position::from_fen(const string& fen, bool c960) {
|
|||
}
|
||||
|
||||
// 5. Halfmove clock
|
||||
int hmc;
|
||||
if (ss >> hmc)
|
||||
st->rule50 = hmc;
|
||||
|
||||
// 6. Fullmove number
|
||||
int fmn;
|
||||
if (ss >> fmn)
|
||||
startPosPlyCounter = (fmn - 1) * 2 + int(sideToMove == BLACK);
|
||||
|
||||
|
@ -774,6 +773,23 @@ bool Position::move_is_check(Move m, const CheckInfo& ci) const {
|
|||
}
|
||||
|
||||
|
||||
/// Position::do_setup_move() makes a permanent move on the board.
|
||||
/// It should be used when setting up a position on board.
|
||||
/// You can't undo the move.
|
||||
|
||||
void Position::do_setup_move(Move m, StateInfo& newSt) {
|
||||
|
||||
do_move(m, newSt);
|
||||
|
||||
// Reset "game ply" in case we made a non-reversible move.
|
||||
// "game ply" is used for repetition detection.
|
||||
if (st->rule50 == 0)
|
||||
st->gamePly = 0;
|
||||
|
||||
// Update the number of plies played from the starting position
|
||||
startPosPlyCounter++;
|
||||
}
|
||||
|
||||
/// Position::do_move() makes a move, and saves all information necessary
|
||||
/// to a StateInfo object. The move is assumed to be legal.
|
||||
/// Pseudo-legal moves should be filtered out before this function is called.
|
||||
|
@ -1541,22 +1557,6 @@ void Position::clear() {
|
|||
}
|
||||
|
||||
|
||||
/// Position::reset_game_ply() simply sets gamePly to 0. It is used from the
|
||||
/// UCI interface code, whenever a non-reversible move is made in a
|
||||
/// 'position fen <fen> moves m1 m2 ...' command. This makes it possible
|
||||
/// for the program to handle games of arbitrary length, as long as the GUI
|
||||
/// handles draws by the 50 move rule correctly.
|
||||
|
||||
void Position::reset_game_ply() {
|
||||
|
||||
st->gamePly = 0;
|
||||
}
|
||||
|
||||
void Position::inc_startpos_ply_counter() {
|
||||
|
||||
startPosPlyCounter++;
|
||||
}
|
||||
|
||||
/// Position::put_piece() puts a piece on the given square of the board,
|
||||
/// updating the board array, pieces list, bitboards, and piece counts.
|
||||
|
||||
|
|
|
@ -221,6 +221,7 @@ public:
|
|||
|
||||
// Doing and undoing moves
|
||||
void detach();
|
||||
void do_setup_move(Move m, StateInfo& St);
|
||||
void do_move(Move m, StateInfo& st);
|
||||
void do_move(Move m, StateInfo& st, const CheckInfo& ci, bool moveIsCheck);
|
||||
void undo_move(Move m);
|
||||
|
@ -250,9 +251,7 @@ public:
|
|||
// Check if side to move could be mated in one
|
||||
bool has_mate_threat();
|
||||
|
||||
// Number of plies since the last non-reversible move
|
||||
int rule_50_counter() const;
|
||||
|
||||
// Number of plies from starting position
|
||||
int startpos_ply_counter() const;
|
||||
|
||||
// Other properties of the position
|
||||
|
@ -263,9 +262,6 @@ public:
|
|||
// Current thread ID searching on the position
|
||||
int thread() const;
|
||||
|
||||
// Reset the gamePly variable to 0
|
||||
void reset_game_ply();
|
||||
void inc_startpos_ply_counter();
|
||||
int64_t nodes_searched() const;
|
||||
void set_nodes_searched(int64_t n);
|
||||
|
||||
|
@ -534,10 +530,6 @@ inline bool Position::move_is_passed_pawn_push(Move m) const {
|
|||
&& pawn_is_passed(c, move_to(m));
|
||||
}
|
||||
|
||||
inline int Position::rule_50_counter() const {
|
||||
return st->rule50;
|
||||
}
|
||||
|
||||
inline int Position::startpos_ply_counter() const {
|
||||
return startPosPlyCounter;
|
||||
}
|
||||
|
|
|
@ -171,11 +171,7 @@ namespace {
|
|||
while (up >> token)
|
||||
{
|
||||
move = move_from_uci(pos, token);
|
||||
pos.do_move(move, st);
|
||||
if (pos.rule_50_counter() == 0)
|
||||
pos.reset_game_ply();
|
||||
|
||||
pos.inc_startpos_ply_counter(); //FIXME: make from_fen to support this and rule50
|
||||
pos.do_setup_move(move, st);
|
||||
}
|
||||
// Our StateInfo st is about going out of scope so copy
|
||||
// its content inside pos before it disappears.
|
||||
|
|
Loading…
Add table
Reference in a new issue