1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Move gamePly among the StateInfo data

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2010-05-31 11:47:15 +02:00
parent b7bc0d4c57
commit 9446dd6da3
2 changed files with 8 additions and 14 deletions

View file

@ -703,7 +703,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
// pointer to point to the new, ready to be updated, state.
struct ReducedStateInfo {
Key pawnKey, materialKey;
int castleRights, rule50, pliesFromNull;
int castleRights, rule50, gamePly, pliesFromNull;
Square epSquare;
Score value;
Value npMaterial[2];
@ -715,8 +715,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
// Save the current key to the history[] array, in order to be able to
// detect repetition draws.
history[gamePly] = key;
gamePly++;
history[st->gamePly++] = key;
// Update side to move
key ^= zobSideToMove;
@ -1061,7 +1060,6 @@ void Position::undo_move(Move m) {
assert(is_ok());
assert(move_is_ok(m));
gamePly--;
sideToMove = opposite_color(sideToMove);
if (move_is_castle(m))
@ -1111,7 +1109,6 @@ void Position::undo_move(Move m) {
pieceList[us][PAWN][index[to]] = to;
}
// Put the piece back at the source square
Bitboard move_bb = make_move_bb(to, from);
do_move_bb(&(byColorBB[us]), move_bb);
@ -1246,7 +1243,7 @@ void Position::do_null_move(StateInfo& backupSt) {
// Save the current key to the history[] array, in order to be able to
// detect repetition draws.
history[gamePly] = st->key;
history[st->gamePly++] = st->key;
// Update the necessary information
if (st->epSquare != SQ_NONE)
@ -1260,7 +1257,6 @@ void Position::do_null_move(StateInfo& backupSt) {
st->rule50++;
st->pliesFromNull = 0;
st->value += (sideToMove == WHITE) ? TempoValue : -TempoValue;
gamePly++;
}
@ -1282,7 +1278,7 @@ void Position::undo_null_move() {
// Update the necessary information
sideToMove = opposite_color(sideToMove);
st->rule50--;
gamePly--;
st->gamePly--;
}
@ -1479,7 +1475,6 @@ void Position::clear() {
pieceList[0][i][j] = pieceList[1][i][j] = SQ_NONE;
sideToMove = WHITE;
gamePly = 0;
initialKFile = FILE_E;
initialKRFile = FILE_H;
initialQRFile = FILE_A;
@ -1494,7 +1489,7 @@ void Position::clear() {
void Position::reset_game_ply() {
gamePly = 0;
st->gamePly = 0;
}
@ -1672,8 +1667,8 @@ bool Position::is_draw() const {
return true;
// Draw by repetition?
for (int i = 4; i <= Min(Min(gamePly, st->rule50), st->pliesFromNull); i += 2)
if (history[gamePly - i] == st->key)
for (int i = 4, e = Min(Min(st->gamePly, st->rule50), st->pliesFromNull); i <= e; i += 2)
if (history[st->gamePly - i] == st->key)
return true;
return false;

View file

@ -100,7 +100,7 @@ enum Phase {
struct StateInfo {
Key pawnKey, materialKey;
int castleRights, rule50, pliesFromNull;
int castleRights, rule50, gamePly, pliesFromNull;
Square epSquare;
Score value;
Value npMaterial[2];
@ -323,7 +323,6 @@ private:
// Other info
Color sideToMove;
int gamePly;
Key history[MaxGameLength];
int castleRightsMask[64];
StateInfo startState;