summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/settings.h4
-rw-r--r--src/yuzu/configuration/config.cpp34
-rw-r--r--src/yuzu_cmd/config.cpp22
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 @@
#include <atomic>
#include <string>
#include "common/common_types.h"
+#include "core/hle/service/acc/profile_manager.h"
namespace Settings {
@@ -114,7 +115,8 @@ struct Values {
// System
bool use_docked_mode;
bool enable_nfc;
- std::string username;
+ int current_user;
+ std::vector<std::pair<std::string, Service::Account::UUID>> users;
int language_index;
// 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() {
qt_config->beginGroup("System");
Settings::values.use_docked_mode = qt_config->value("use_docked_mode", false).toBool();
Settings::values.enable_nfc = qt_config->value("enable_nfc", true).toBool();
- Settings::values.username = qt_config->value("username", "yuzu").toString().toStdString();
+
+ Settings::values.users.clear();
+ const auto size = qt_config->beginReadArray("users");
+ for (int i = 0; i < size; ++i) {
+ qt_config->setArrayIndex(i);
+ const Service::Account::UUID uuid(qt_config->value("uuid_low").toULongLong(),
+ qt_config->value("uuid_high").toULongLong());
+ Settings::values.users.emplace_back(qt_config->value("username").toString().toStdString(),
+ uuid);
+ }
+
+ qt_config->endArray();
+
+ if (Settings::values.users.empty())
+ Settings::values.users.emplace_back("yuzu", Service::Account::UUID{}.Generate());
+
+ Settings::values.current_user =
+ std::clamp(qt_config->value("current_user", 0).toInt(), 0, size);
+
Settings::values.language_index = qt_config->value("language_index", 1).toInt();
qt_config->endGroup();
@@ -260,7 +278,19 @@ void Config::SaveValues() {
qt_config->beginGroup("System");
qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode);
qt_config->setValue("enable_nfc", Settings::values.enable_nfc);
- qt_config->setValue("username", QString::fromStdString(Settings::values.username));
+ qt_config->setValue("current_user", Settings::values.current_user);
+
+ qt_config->beginWriteArray("users", Settings::values.users.size());
+ for (std::size_t i = 0; i < Settings::values.users.size(); ++i) {
+ qt_config->setArrayIndex(i);
+ const auto& user = Settings::values.users[i];
+ qt_config->setValue("uuid_low", user.second.uuid[0]);
+ qt_config->setValue("uuid_high", user.second.uuid[1]);
+ qt_config->setValue("username", QString::fromStdString(user.first));
+ }
+
+ qt_config->endArray();
+
qt_config->setValue("language_index", Settings::values.language_index);
qt_config->endGroup();
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() {
// System
Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
Settings::values.enable_nfc = sdl2_config->GetBoolean("System", "enable_nfc", true);
- Settings::values.username = sdl2_config->Get("System", "username", "yuzu");
- if (Settings::values.username.empty()) {
- Settings::values.username = "yuzu";
+ const auto size = sdl2_config->GetInteger("System", "users_size", 0);
+
+ Settings::values.users.clear();
+ for (std::size_t i = 0; i < size; ++i) {
+ const auto uuid_low = std::stoull(
+ sdl2_config->Get("System", fmt::format("users_{}_uuid_low", i), "0"), nullptr, 0);
+ const auto uuid_high = std::stoull(
+ sdl2_config->Get("System", fmt::format("users_{}_uuid_high", i), "0"), nullptr, 0);
+ Settings::values.users.emplace_back(
+ sdl2_config->Get("System", fmt::format("users_{}_username", i), ""),
+ Service::Account::UUID{uuid_low, uuid_high});
+ }
+
+ if (Settings::values.users.empty()) {
+ Settings::values.users.emplace_back("yuzu", Service::Account::UUID{1, 0});
+ LOG_WARNING(
+ Config,
+ "You are using the default UUID of {1, 0}! This might cause issues down the road! "
+ "Please consider randomizing a UUID and adding it to the sdl2_config.ini file.");
}
// Miscellaneous