Set default variant based on protocol
authorFabian Fichter <ianfab@users.noreply.github.com>
Mon, 11 Nov 2019 20:01:17 +0000 (21:01 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Mon, 11 Nov 2019 20:07:34 +0000 (21:07 +0100)
Improve compatibility with shogi and xiangqi GUIs
by setting suitable defaults for UCI_Variant:
UCI: chess
USI: shogi
UCCI: xiangqi
xboard: chess

src/uci.cpp
src/uci.h
src/ucioption.cpp

index d6177e9..b2c5f1c 100644 (file)
@@ -282,9 +282,11 @@ void UCI::loop(int argc, char* argv[]) {
 
       else if (token == "uci" || token == "usi" || token == "ucci" || token == "xboard")
       {
-          Options["Protocol"] = token;
-          if (token == "ucci")
-              Options["UCI_Variant"] = string("xiangqi");
+          Options["Protocol"].set_default(token);
+          string defaultVariant = string(  token == "usi"  ? "shogi"
+                                         : token == "ucci" ? "xiangqi"
+                                                           : "chess");
+          Options["UCI_Variant"].set_default(defaultVariant);
           if (token != "xboard")
               sync_cout << "id name " << engine_info(true)
                           << "\n" << Options
index 14d0a91..e900061 100644 (file)
--- a/src/uci.h
+++ b/src/uci.h
@@ -60,6 +60,7 @@ public:
   bool operator==(const char*) const;
   bool operator!=(const char*) const;
   void set_combo(std::vector<std::string> newComboValues);
+  void set_default(std::string newDefault);
 
 private:
   friend std::ostream& operator<<(std::ostream&, const OptionsMap&);
index d4f653b..c5c562c 100644 (file)
@@ -275,4 +275,8 @@ void Option::set_combo(std::vector<std::string> newComboValues) {
     comboValues = newComboValues;
 }
 
+void Option::set_default(std::string newDefault) {
+    defaultValue = currentValue = newDefault;
+}
+
 } // namespace UCI