summaryrefslogtreecommitdiff
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 @@
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
12namespace Settings { 13namespace 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