From 21219ad49d56be5394a90dfcc3792d2cf6a891bb Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Mon, 11 Nov 2019 21:01:17 +0100 Subject: [PATCH] Set default variant based on protocol 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 | 8 +++++--- src/uci.h | 1 + src/ucioption.cpp | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/uci.cpp b/src/uci.cpp index d6177e9..b2c5f1c 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -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 diff --git a/src/uci.h b/src/uci.h index 14d0a91..e900061 100644 --- 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 newComboValues); + void set_default(std::string newDefault); private: friend std::ostream& operator<<(std::ostream&, const OptionsMap&); diff --git a/src/ucioption.cpp b/src/ucioption.cpp index d4f653b..c5c562c 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -275,4 +275,8 @@ void Option::set_combo(std::vector newComboValues) { comboValues = newComboValues; } +void Option::set_default(std::string newDefault) { + defaultValue = currentValue = newDefault; +} + } // namespace UCI -- 1.7.0.4