Improve Winboard compatibility for Janggi
authorFabian Fichter <ianfab@users.noreply.github.com>
Sun, 10 May 2020 13:18:33 +0000 (15:18 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Sun, 10 May 2020 13:18:33 +0000 (15:18 +0200)
* Add Betza notation of palace moves
* Change piece char table to avoid check detection

src/ucioption.cpp
src/variant.cpp

index 0509cb2..894ac61 100644 (file)
@@ -80,8 +80,23 @@ void on_variant_change(const Option &o) {
                             : pt == KING && v->cambodianMoves ? "ismN"
                             : pt == FERS && v->cambodianMoves ? "ifnD"
                                                               : "";
+            // Janggi palace moves
+            if (v->diagonalLines)
+            {
+                PieceType pt2 = pt == KING ? v->kingType : pt;
+                if (pt2 == WAZIR)
+                    suffix += "F";
+                else if (pt2 == SOLDIER)
+                    suffix += "fF";
+                else if (pt2 == ROOK)
+                    suffix += "B";
+                else if (pt2 == JANGGI_CANNON)
+                    suffix += "pB";
+            }
+            // Castling
             if (pt == KING && v->castling)
                  suffix += "O" + std::to_string((v->castlingKingsideFile - v->castlingQueensideFile) / 2);
+            // Drop region
             if (v->pieceDrops)
             {
                 if (pt == PAWN && !v->firstRankPawnDrops)
index f98ab93..8e0b517 100644 (file)
@@ -854,6 +854,7 @@ namespace {
     // https://en.wikipedia.org/wiki/Janggi
     Variant* janggi_variant() {
         Variant* v = xiangqi_variant();
+        v->pieceToCharTable = "PN.R.AB....C.........Kpn.r.ab....c.........k";
         v->remove_piece(FERS);
         v->remove_piece(CANNON);
         v->remove_piece(ELEPHANT);