From d55128fc0ce74e35afb57550ea97a361dfb163da Mon Sep 17 00:00:00 2001 From: H.G. Muller Date: Sat, 8 Oct 2011 20:43:52 +0200 Subject: [PATCH] Incorporate variant type in book hash key This prevents booksforone variant being used for another, and allows multi-variant books. --- book.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/book.c b/book.c index 6b1198d..a5aa6ab 100644 --- a/book.c +++ b/book.c @@ -278,6 +278,23 @@ uint64 hash(int moveNr) { int r, f, p_enc, squareNr, pieceGroup; uint64 key=0, holdingsKey=0, Zobrist; + VariantClass v = gameInfo.variant; + + switch(v) { + case VariantNormal: + case VariantFischeRandom: // compatible with normal + case VariantNoCastle: + case VariantXiangqi: // for historic reasons; does never collide anyway because of other King type + break; + case VariantGiveaway: // in opening same as suicide + key += VariantSuicide; + break; + case VariantGothic: // these are special cases of CRC, and can share book + case VariantCapablanca: + v = VariantCapaRandom; + default: + key += v; // variant type incorporated in key to allow mixed books without collisions + } for(f=0; f