Overwrite setup command for Janggi variants
authorFabian Fichter <ianfab@users.noreply.github.com>
Thu, 29 Oct 2020 19:25:18 +0000 (20:25 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Thu, 29 Oct 2020 19:25:18 +0000 (20:25 +0100)
Improve compatibility with most recent XBoard version
supporting Janggi as a built-in variant (see #192).

src/ucioption.cpp
src/variant.cpp

index 53da357..010c9c4 100644 (file)
@@ -72,6 +72,18 @@ void on_variant_change(const Option &o) {
     int pocketsize = v->pieceDrops ? (v->pocketSize ? v->pocketSize : v->pieceTypes.size()) : 0;
     if (Options["Protocol"] == "xboard")
     {
+        // Overwrite setup command for Janggi variants
+        auto itJanggi = variants.find("janggi");
+        if (   itJanggi != variants.end()
+            && v->variantTemplate == itJanggi->second->variantTemplate
+            && v->startFen == itJanggi->second->startFen
+            && v->pieceToCharTable == itJanggi->second->pieceToCharTable)
+        {
+            sync_cout << "setup (PH.R.AE..K.C.ph.r.ae..k.c.) 9x10+0_janggi "
+                      << "rhea1aehr/4k4/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/4K4/RHEA1AEHR w - - 0 1"
+                      << sync_endl;
+            return;
+        }
         // Send setup command
         sync_cout << "setup (" << v->pieceToCharTable << ") "
                   << v->maxFile + 1 << "x" << v->maxRank + 1
index b9aa5d6..bd444cf 100644 (file)
@@ -909,6 +909,7 @@ namespace {
     // Official tournament rules with bikjang and material counting.
     Variant* janggi_variant() {
         Variant* v = xiangqi_variant();
+        v->variantTemplate = "janggi";
         v->pieceToCharTable = ".N.R.AB.P..C.........K.n.r.ab.p..c.........k";
         v->remove_piece(FERS);
         v->remove_piece(CANNON);