diff options
| -rw-r--r-- | src/core/settings.h | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 34 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 22 |
3 files changed, 54 insertions, 6 deletions
diff --git a/src/core/settings.h b/src/core/settings.h index ca80718e2..0fa726d5d 100644 --- a/src/core/settings.h +++ b/src/core/settings.h | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <atomic> | 8 | #include <atomic> |
| 9 | #include <string> | 9 | #include <string> |
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "core/hle/service/acc/profile_manager.h" | ||
| 11 | 12 | ||
| 12 | namespace Settings { | 13 | namespace Settings { |
| 13 | 14 | ||
| @@ -114,7 +115,8 @@ struct Values { | |||
| 114 | // System | 115 | // System |
| 115 | bool use_docked_mode; | 116 | bool use_docked_mode; |
| 116 | bool enable_nfc; | 117 | bool enable_nfc; |
| 117 | std::string username; | 118 | int current_user; |
| 119 | std::vector<std::pair<std::string, Service::Account::UUID>> users; | ||
| 118 | int language_index; | 120 | int language_index; |
| 119 | 121 | ||
| 120 | // Controls | 122 | // Controls |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index d029590ff..36f0c4f4c 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -123,7 +123,25 @@ void Config::ReadValues() { | |||
| 123 | qt_config->beginGroup("System"); | 123 | qt_config->beginGroup("System"); |
| 124 | Settings::values.use_docked_mode = qt_config->value("use_docked_mode", false).toBool(); | 124 | Settings::values.use_docked_mode = qt_config->value("use_docked_mode", false).toBool(); |
| 125 | Settings::values.enable_nfc = qt_config->value("enable_nfc", true).toBool(); | 125 | Settings::values.enable_nfc = qt_config->value("enable_nfc", true).toBool(); |
| 126 | Settings::values.username = qt_config->value("username", "yuzu").toString().toStdString(); | 126 | |
| 127 | Settings::values.users.clear(); | ||
| 128 | const auto size = qt_config->beginReadArray("users"); | ||
| 129 | for (int i = 0; i < size; ++i) { | ||
| 130 | qt_config->setArrayIndex(i); | ||
| 131 | const Service::Account::UUID uuid(qt_config->value("uuid_low").toULongLong(), | ||
| 132 | qt_config->value("uuid_high").toULongLong()); | ||
| 133 | Settings::values.users.emplace_back(qt_config->value("username").toString().toStdString(), | ||
| 134 | uuid); | ||
| 135 | } | ||
| 136 | |||
| 137 | qt_config->endArray(); | ||
| 138 | |||
| 139 | if (Settings::values.users.empty()) | ||
| 140 | Settings::values.users.emplace_back("yuzu", Service::Account::UUID{}.Generate()); | ||
| 141 | |||
| 142 | Settings::values.current_user = | ||
| 143 | std::clamp(qt_config->value("current_user", 0).toInt(), 0, size); | ||
| 144 | |||
| 127 | Settings::values.language_index = qt_config->value("language_index", 1).toInt(); | 145 | Settings::values.language_index = qt_config->value("language_index", 1).toInt(); |
| 128 | qt_config->endGroup(); | 146 | qt_config->endGroup(); |
| 129 | 147 | ||
| @@ -260,7 +278,19 @@ void Config::SaveValues() { | |||
| 260 | qt_config->beginGroup("System"); | 278 | qt_config->beginGroup("System"); |
| 261 | qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode); | 279 | qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode); |
| 262 | qt_config->setValue("enable_nfc", Settings::values.enable_nfc); | 280 | qt_config->setValue("enable_nfc", Settings::values.enable_nfc); |
| 263 | qt_config->setValue("username", QString::fromStdString(Settings::values.username)); | 281 | qt_config->setValue("current_user", Settings::values.current_user); |
| 282 | |||
| 283 | qt_config->beginWriteArray("users", Settings::values.users.size()); | ||
| 284 | for (std::size_t i = 0; i < Settings::values.users.size(); ++i) { | ||
| 285 | qt_config->setArrayIndex(i); | ||
| 286 | const auto& user = Settings::values.users[i]; | ||
| 287 | qt_config->setValue("uuid_low", user.second.uuid[0]); | ||
| 288 | qt_config->setValue("uuid_high", user.second.uuid[1]); | ||
| 289 | qt_config->setValue("username", QString::fromStdString(user.first)); | ||
| 290 | } | ||
| 291 | |||
| 292 | qt_config->endArray(); | ||
| 293 | |||
| 264 | qt_config->setValue("language_index", Settings::values.language_index); | 294 | qt_config->setValue("language_index", Settings::values.language_index); |
| 265 | qt_config->endGroup(); | 295 | qt_config->endGroup(); |
| 266 | 296 | ||
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 654a15a5c..613894449 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -126,9 +126,25 @@ void Config::ReadValues() { | |||
| 126 | // System | 126 | // System |
| 127 | Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); | 127 | Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); |
| 128 | Settings::values.enable_nfc = sdl2_config->GetBoolean("System", "enable_nfc", true); | 128 | Settings::values.enable_nfc = sdl2_config->GetBoolean("System", "enable_nfc", true); |
| 129 | Settings::values.username = sdl2_config->Get("System", "username", "yuzu"); | 129 | const auto size = sdl2_config->GetInteger("System", "users_size", 0); |
| 130 | if (Settings::values.username.empty()) { | 130 | |
| 131 | Settings::values.username = "yuzu"; | 131 | Settings::values.users.clear(); |
| 132 | for (std::size_t i = 0; i < size; ++i) { | ||
| 133 | const auto uuid_low = std::stoull( | ||
| 134 | sdl2_config->Get("System", fmt::format("users_{}_uuid_low", i), "0"), nullptr, 0); | ||
| 135 | const auto uuid_high = std::stoull( | ||
| 136 | sdl2_config->Get("System", fmt::format("users_{}_uuid_high", i), "0"), nullptr, 0); | ||
| 137 | Settings::values.users.emplace_back( | ||
| 138 | sdl2_config->Get("System", fmt::format("users_{}_username", i), ""), | ||
| 139 | Service::Account::UUID{uuid_low, uuid_high}); | ||
| 140 | } | ||
| 141 | |||
| 142 | if (Settings::values.users.empty()) { | ||
| 143 | Settings::values.users.emplace_back("yuzu", Service::Account::UUID{1, 0}); | ||
| 144 | LOG_WARNING( | ||
| 145 | Config, | ||
| 146 | "You are using the default UUID of {1, 0}! This might cause issues down the road! " | ||
| 147 | "Please consider randomizing a UUID and adding it to the sdl2_config.ini file."); | ||
| 132 | } | 148 | } |
| 133 | 149 | ||
| 134 | // Miscellaneous | 150 | // Miscellaneous |