[XAM] Settings: Added specific default settings list

This commit is contained in:
Gliniak 2025-03-09 23:33:13 +01:00
parent 01fc219fc2
commit 1544349499
2 changed files with 20 additions and 0 deletions

View File

@ -18,11 +18,24 @@ namespace xe {
namespace kernel {
namespace xam {
const static std::array<UserSetting, 2> 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<uint32_t>(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> 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<UserSetting>(setting);
}
}
const auto type = UserData::get_type(setting_id);
switch (type) {

View File

@ -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