AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
PlayerSettingsStore Namespace Reference

Functions

PlayerSettingVector ParseSettingsData (std::string const &data)
 
std::string SerializeSettingsData (PlayerSettingVector const &settings)
 
static PlayerSettingVector LoadPlayerSettings (ObjectGuid::LowType playerLowGuid, std::string const &source)
 
void UpdateSetting (ObjectGuid::LowType playerLowGuid, std::string const &source, uint32 index, uint32 value)
 
CharacterDatabasePreparedStatementPrepareReplaceStatement (ObjectGuid::LowType playerLowGuid, std::string const &source, PlayerSettingVector const &settings)
 

Function Documentation

◆ LoadPlayerSettings()

static PlayerSettingVector PlayerSettingsStore::LoadPlayerSettings ( ObjectGuid::LowType  playerLowGuid,
std::string const &  source 
)
static
60 {
62
64 stmt->SetData(0, playerLowGuid);
65 PreparedQueryResult dbRes = CharacterDatabase.Query(stmt);
66 if (!dbRes)
67 return result;
68
69 do
70 {
71 Field* fields = dbRes->Fetch();
72 std::string rowSource = fields[0].Get<std::string>();
73 if (rowSource != source)
74 continue;
75
76 std::string data = fields[1].Get<std::string>();
77 return ParseSettingsData(data);
78 } while (dbRes->NextRow());
79
80 return result;
81 }
@ CHAR_SEL_CHAR_SETTINGS
Definition CharacterDatabase.h:522
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition DatabaseEnvFwd.h:45
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::vector< PlayerSetting > PlayerSettingVector
Definition PlayerSettings.h:52
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
PlayerSettingVector ParseSettingsData(std::string const &data)
Definition PlayerSettings.cpp:30

References CHAR_SEL_CHAR_SETTINGS, CharacterDatabase, Field::Get(), ParseSettingsData(), and PreparedStatementBase::SetData().

Referenced by UpdateSetting().

◆ ParseSettingsData()

PlayerSettingVector PlayerSettingsStore::ParseSettingsData ( std::string const &  data)
31 {
33 std::vector<std::string_view> tokens = Acore::Tokenize(data, ' ', false);
34 result.reserve(tokens.size());
35 for (auto const& token : tokens)
36 {
37 if (token.empty())
38 continue;
39 if (auto parsed = Acore::StringTo<uint32>(token))
40 result.emplace_back(*parsed);
41 }
42 return result;
43 }
std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
Definition Tokenize.cpp:20

References Acore::Tokenize().

Referenced by Player::_LoadCharacterSettings(), and LoadPlayerSettings().

◆ PrepareReplaceStatement()

CharacterDatabasePreparedStatement * PlayerSettingsStore::PrepareReplaceStatement ( ObjectGuid::LowType  playerLowGuid,
std::string const &  source,
PlayerSettingVector const &  settings 
)
102{
104 stmt->SetData(0, playerLowGuid);
105 stmt->SetData(1, source);
106 stmt->SetData(2, SerializeSettingsData(settings));
107 return stmt;
108}
@ CHAR_REP_CHAR_SETTINGS
Definition CharacterDatabase.h:523
std::string SerializeSettingsData(PlayerSettingVector const &settings)
Definition PlayerSettings.cpp:46

References CHAR_REP_CHAR_SETTINGS, CharacterDatabase, SerializeSettingsData(), and PreparedStatementBase::SetData().

Referenced by Player::_SavePlayerSettings(), and UpdateSetting().

◆ SerializeSettingsData()

std::string PlayerSettingsStore::SerializeSettingsData ( PlayerSettingVector const &  settings)
47 {
48 if (settings.empty())
49 return "";
50
51 std::ostringstream data;
52 data << settings[0].value << ' ';
53 for (size_t i = 1; i < settings.size(); ++i)
54 data << settings[i].value << ' ';
55 return data.str();
56 }

Referenced by PrepareReplaceStatement().

◆ UpdateSetting()

void PlayerSettingsStore::UpdateSetting ( ObjectGuid::LowType  playerLowGuid,
std::string const &  source,
uint32  index,
uint32  value 
)
84 {
85 if (!sWorld->getBoolConfig(CONFIG_PLAYER_SETTINGS_ENABLED))
86 return;
87
88 PlayerSettingVector settings = LoadPlayerSettings(playerLowGuid, source);
89 size_t const requiredSize = static_cast<size_t>(index) + 1;
90 if (settings.size() < requiredSize)
91 settings.resize(requiredSize); // zero-initialized PlayerSetting::value
92
93 settings[index].value = value;
94
96 CharacterDatabase.Execute(stmt);
97 }
@ CONFIG_PLAYER_SETTINGS_ENABLED
Definition WorldConfig.h:129
#define sWorld
Definition World.h:317
static PlayerSettingVector LoadPlayerSettings(ObjectGuid::LowType playerLowGuid, std::string const &source)
Definition PlayerSettings.cpp:59
CharacterDatabasePreparedStatement * PrepareReplaceStatement(ObjectGuid::LowType playerLowGuid, std::string const &source, PlayerSettingVector const &settings)
Definition PlayerSettings.cpp:101

References CharacterDatabase, CONFIG_PLAYER_SETTINGS_ENABLED, LoadPlayerSettings(), PrepareReplaceStatement(), and sWorld.