From a676e314121da367b7e2d1162fa2df4688d4414f Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Tue, 9 Feb 2021 21:39:59 +0100 Subject: [PATCH] Speedup for variants with commoners No functional change. --- src/position.cpp | 4 ++-- src/variant.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index 59a289d..e23bda2 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -790,13 +790,13 @@ Bitboard Position::slider_blockers(Bitboard sliders, Square s, Bitboard& pinners Bitboard Position::attackers_to(Square s, Bitboard occupied, Color c, Bitboard janggiCannons) const { // Use a faster version for variants with standard chess pieces - if (!var->isFairy && !var->isRestricted) + if (!var->hasFairy && !var->isRestricted) { return (pawn_attacks_bb(~c, s) & pieces(c, PAWN)) | (attacks_bb(s) & pieces(c, KNIGHT)) | (attacks_bb< ROOK>(s, occupied) & pieces(c, ROOK, QUEEN)) | (attacks_bb(s, occupied) & pieces(c, BISHOP, QUEEN)) - | (attacks_bb(s) & pieces(c, KING)); + | (attacks_bb(s) & pieces(c, KING, COMMONER)); } Bitboard b = 0; diff --git a/src/variant.h b/src/variant.h index 13a8707..30531cf 100644 --- a/src/variant.h +++ b/src/variant.h @@ -129,7 +129,7 @@ struct Variant { CountingRule countingRule = NO_COUNTING; // Derived properties - bool isFairy = true; + bool hasFairy = true; bool isRestricted = true; void add_piece(PieceType pt, char c, char c2 = ' ') { @@ -156,7 +156,7 @@ struct Variant { // Pre-calculate derived properties Variant* conclude() { - isFairy = std::any_of(pieceTypes.begin(), pieceTypes.end(), [](PieceType pt) { return pt >= FAIRY_PIECES && pt < KING; }); + hasFairy = std::any_of(pieceTypes.begin(), pieceTypes.end(), [this](PieceType pt) { return pt >= FAIRY_PIECES && pt != COMMONER && !(pt == KING && kingType == KING); }); isRestricted = std::any_of(pieceTypes.begin(), pieceTypes.end(), [this](PieceType pt) { return mobilityRegion[WHITE][pt] || mobilityRegion[BLACK][pt]; -- 1.7.0.4