From f327ddbebf2a2ce837b85328f98f726e3c84ab6e Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Fri, 15 May 2020 15:14:11 +0200 Subject: [PATCH] Support configuration of mobility area Closes #130. --- src/parser.cpp | 9 +++++++++ src/variants.ini | 2 ++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/parser.cpp b/src/parser.cpp index 33261c8..0bfd656 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -143,6 +143,7 @@ Variant* VariantParser::parse(Variant* v) { // piece types for (const auto& pieceInfo : pieceMap) { + // piece char const auto& keyValue = config.find(pieceInfo.second->name); if (keyValue != config.end() && !keyValue->second.empty()) { @@ -155,6 +156,14 @@ Variant* VariantParser::parse(Variant* v) { v->remove_piece(pieceInfo.first); } } + // mobility region + std::string capitalizedPiece = pieceInfo.second->name; + capitalizedPiece[0] = toupper(capitalizedPiece[0]); + for (Color c : {WHITE, BLACK}) + { + std::string color = c == WHITE ? "White" : "Black"; + parse_attribute("mobilityRegion" + color + capitalizedPiece, v->mobilityRegion[c][pieceInfo.first]); + } } parse_attribute("variantTemplate", v->variantTemplate); parse_attribute("pieceToCharTable", v->pieceToCharTable); diff --git a/src/variants.ini b/src/variants.ini index 0df72f4..815e140 100644 --- a/src/variants.ini +++ b/src/variants.ini @@ -104,6 +104,8 @@ # chess960: allow chess960 castling [bool] (default: false) # twoBoards: the game is influenced by a second board (e.g., bughouse) [bool] (default: false) # startFen: FEN of starting position (default: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1) +# mobilityRegion: the mobility area can be defined via options specific to color and piece, +# .e.g., mobilityRegionWhiteRook, mobilityRegionBlackJanggiElephant, etc. [Bitboard] # promotionRank: relative rank required to reach for promotion [Rank] (default: 8) # promotionPieceTypes: pawn promotion options using their one-letter representations (default: nbrq) # sittuyinPromotion: enable Sittuyin-style pawn promotion [bool] (default: false) -- 1.7.0.4