Expliclity set pocket size for minishogi
authorFabian Fichter <ianfab@users.noreply.github.com>
Sat, 12 Jan 2019 14:39:03 +0000 (15:39 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Sat, 12 Jan 2019 14:39:03 +0000 (15:39 +0100)
For better compatility with XBoard/WinBoard.

No functional change.

src/ucioption.cpp
src/variant.cpp
src/variant.h

index 35fc4f0..6c4e9f8 100644 (file)
@@ -52,7 +52,7 @@ void on_variant_change(const Option &o) {
     sync_cout << "info string variant " << (std::string)o
               << " files " << v->maxFile + 1
               << " ranks " << v->maxRank + 1
-              << " pocket " << (v->pieceDrops ? v->pieceTypes.size() : 0)
+              << " pocket " << (v->pieceDrops ? (v->pocketSize ? v->pocketSize : v->pieceTypes.size()) : 0)
               << " template " << v->variantTemplate
               << " startpos " << v->startFen
               << sync_endl;
index 1df0e35..73f76fb 100644 (file)
@@ -241,6 +241,7 @@ VariantMap variants; // Global object
     Variant* minishogi_variant() {
         Variant* v = fairy_variant_base();
         v->variantTemplate = "shogi";
+        v->pocketSize = 5;
         v->maxRank = RANK_5;
         v->maxFile = FILE_E;
         v->reset_pieces();
@@ -269,8 +270,13 @@ VariantMap variants; // Global object
         v->stalemateValue = -VALUE_MATE;
         return v;
     }
-    Variant* kyotoshogi_variant() {
+    Variant* minishogi_variant_base() {
         Variant* v = minishogi_variant();
+        v->pocketSize = 0;
+        return v;
+    }
+    Variant* kyotoshogi_variant() {
+        Variant* v = minishogi_variant_base();
         v->add_piece(LANCE, 'l');
         v->add_piece(SHOGI_KNIGHT, 'n');
         v->startFen = "p+nks+l/5/5/5/+LSK+NP[-] w 0 1";
@@ -291,7 +297,7 @@ VariantMap variants; // Global object
         return v;
     }
     Variant* dobutsu_variant() {
-        Variant* v = minishogi_variant();
+        Variant* v = minishogi_variant_base();
         v->maxRank = RANK_4;
         v->maxFile = FILE_C;
         v->reset_pieces();
@@ -311,7 +317,7 @@ VariantMap variants; // Global object
         return v;
     }
     Variant* gorogoroshogi_variant() {
-        Variant* v = minishogi_variant();
+        Variant* v = minishogi_variant_base();
         v->maxRank = RANK_6;
         v->maxFile = FILE_E;
         v->startFen = "sgkgs/5/1ppp1/1PPP1/5/SGKGS[-] w 0 1";
@@ -319,7 +325,7 @@ VariantMap variants; // Global object
         return v;
     }
     Variant* judkinsshogi_variant() {
-        Variant* v = minishogi_variant();
+        Variant* v = minishogi_variant_base();
         v->maxRank = RANK_6;
         v->maxFile = FILE_F;
         v->add_piece(SHOGI_KNIGHT, 'n');
@@ -329,7 +335,7 @@ VariantMap variants; // Global object
         return v;
     }
     Variant* euroshogi_variant() {
-        Variant* v = minishogi_variant();
+        Variant* v = minishogi_variant_base();
         v->maxRank = RANK_8;
         v->maxFile = FILE_H;
         v->add_piece(EUROSHOGI_KNIGHT, 'n');
@@ -441,7 +447,7 @@ VariantMap variants; // Global object
     }
 #ifdef LARGEBOARDS
     Variant* shogi_variant() {
-        Variant* v = minishogi_variant();
+        Variant* v = minishogi_variant_base();
         v->maxRank = RANK_9;
         v->maxFile = FILE_I;
         v->add_piece(LANCE, 'l');
index c2e8d4a..537a608 100644 (file)
@@ -33,6 +33,7 @@
 
 struct Variant {
   std::string variantTemplate = "fairy";
+  int pocketSize = 0;
   Rank maxRank = RANK_8;
   File maxFile = FILE_H;
   std::set<PieceType> pieceTypes = { PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING };