From: Fabian Fichter Date: Fri, 15 May 2020 13:14:11 +0000 (+0200) Subject: Support configuration of mobility area X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=f327ddbebf2a2ce837b85328f98f726e3c84ab6e;p=fairystockfish.git Support configuration of mobility area Closes #130. --- 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)