From 1544349499c1f5703767aca248d9ca31e6e755ea Mon Sep 17 00:00:00 2001 From: Gliniak Date: Sun, 9 Mar 2025 23:33:13 +0100 Subject: [PATCH] [XAM] Settings: Added specific default settings list --- src/xenia/kernel/xam/user_settings.cc | 19 +++++++++++++++++++ src/xenia/kernel/xam/user_settings.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/xenia/kernel/xam/user_settings.cc b/src/xenia/kernel/xam/user_settings.cc index df113c79e..d07af3b1a 100644 --- a/src/xenia/kernel/xam/user_settings.cc +++ b/src/xenia/kernel/xam/user_settings.cc @@ -18,11 +18,24 @@ namespace xe { namespace kernel { namespace xam { +const static std::array default_setting_values = { + UserSetting( + UserSettingId::XPROFILE_GAMER_TIER, + X_XAMACCOUNTINFO::AccountSubscriptionTier::kSubscriptionTierGold), + UserSetting( + UserSettingId::XPROFILE_GAMERCARD_PICTURE_KEY, + xe::string_util::read_u16string_and_swap(u"gamercard_picture_key"))}; + UserSetting::UserSetting(UserSetting& setting) : UserData(setting) { setting_id_ = setting.setting_id_; setting_source_ = setting.setting_source_; } +UserSetting::UserSetting(const UserSetting& setting) : UserData(setting) { + setting_id_ = setting.setting_id_; + setting_source_ = setting.setting_source_; +} + UserSetting::UserSetting(UserSettingId setting_id, UserDataTypes setting_data) : UserData(get_type(static_cast(setting_id)), setting_data), setting_id_(setting_id), @@ -46,6 +59,12 @@ UserSetting::UserSetting(const X_XDBF_GPD_SETTING_HEADER* profile_setting, std::optional UserSetting::GetDefaultSetting( const UserProfile* user, uint32_t setting_id) { + for (const auto& setting : default_setting_values) { + if (setting.get_setting_id() == setting_id) { + return std::make_optional(setting); + } + } + const auto type = UserData::get_type(setting_id); switch (type) { diff --git a/src/xenia/kernel/xam/user_settings.h b/src/xenia/kernel/xam/user_settings.h index e5e31fe86..6b0f59ba7 100644 --- a/src/xenia/kernel/xam/user_settings.h +++ b/src/xenia/kernel/xam/user_settings.h @@ -397,6 +397,7 @@ enum PREFERRED_COLOR_OPTIONS : uint32_t { class UserSetting : public UserData { public: UserSetting(UserSetting& setting); + UserSetting(const UserSetting& setting); // Ctor for writing from host UserSetting(UserSettingId setting_id, UserDataTypes setting_data); // Ctor for writing to GPD