// piece types
for (const auto& pieceInfo : pieceMap)
{
+ // piece char
const auto& keyValue = config.find(pieceInfo.second->name);
if (keyValue != config.end() && !keyValue->second.empty())
{
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);
# 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)