From: Fabian Fichter Date: Sat, 18 Jan 2020 12:30:07 +0000 (+0100) Subject: Support resetting of piece types in configuration X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=289f250722a4d28acbb38c8436420357a26214e3;p=fairystockfish.git Support resetting of piece types in configuration --- diff --git a/src/parser.cpp b/src/parser.cpp index ad14701..996f562 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -116,7 +116,12 @@ Variant* VariantParser::parse(Variant* v) { { const auto& keyValue = config.find(pieceInfo.second->name); if (keyValue != config.end() && !keyValue->second.empty()) - v->add_piece(pieceInfo.first, keyValue->second.at(0)); + { + if (isalpha(keyValue->second.at(0))) + v->add_piece(pieceInfo.first, keyValue->second.at(0)); + else + v->remove_piece(pieceInfo.first); + } } parse_attribute("variantTemplate", v->variantTemplate); parse_attribute("pieceToCharTable", v->pieceToCharTable); @@ -156,7 +161,7 @@ Variant* VariantParser::parse(Variant* v) { size_t idx, idx2; std::stringstream ss(it_prom_pt->second); while ( ss >> token && (idx = v->pieceToChar.find(toupper(token))) != std::string::npos && ss >> token - && ss >> token && (idx2 = v->pieceToChar.find(toupper(token))) != std::string::npos) + && ss >> token && (idx2 = (token == '-' ? 0 : v->pieceToChar.find(toupper(token)))) != std::string::npos) v->promotedPieceType[idx] = PieceType(idx2); } parse_attribute("piecePromotionOnCapture", v->piecePromotionOnCapture); @@ -212,6 +217,7 @@ Variant* VariantParser::parse(Variant* v) { const auto& it_ext = config.find("extinctionPieceTypes"); if (it_ext != config.end()) { + v->extinctionPieceTypes = {}; char token; size_t idx; std::stringstream ss(it_ext->second); diff --git a/src/variants.ini b/src/variants.ini index 61c3c0d..13d790c 100644 --- a/src/variants.ini +++ b/src/variants.ini @@ -219,19 +219,10 @@ whiteDropRegion = *1 *2 *3 *4 *5 blackDropRegion = *6 *7 *8 *9 *10 # Hybrid variant of antichess and losalamos -[anti-losalamos] -pawn = p -knight = n -rook = r -queen = q +[anti-losalamos:losalamos] +king = - commoner = k -maxRank = 6 -maxFile = 6 -startFen = rnqknr/pppppp/6/6/PPPPPP/RNQKNR w - - 0 1 -promotionRank = 6 promotionPieceTypes = nrqk -doubleStep = false -castling = false mustCapture = true stalemateValue = win extinctionValue = win