mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 13:30:06 +00:00
Add subcategory functionality to settings, still need to read/write JSON
This commit is contained in:
parent
cea2993665
commit
1a30743c0a
2 changed files with 43 additions and 0 deletions
|
|
@ -25,6 +25,7 @@ public:
|
|||
|
||||
std::vector<std::pair<std::string, std::vector<SettingsCategory*>>>
|
||||
subcategoryArrays_;
|
||||
std::vector<SettingsCategory*> subcategories_;
|
||||
std::vector<SettingsVariableBase*> variables_;
|
||||
};
|
||||
|
||||
|
|
@ -54,6 +55,12 @@ void SettingsCategory::SetDefaults()
|
|||
}
|
||||
}
|
||||
|
||||
// Set subcategory defaults
|
||||
for (auto& subcategory : p->subcategories_)
|
||||
{
|
||||
subcategory->SetDefaults();
|
||||
}
|
||||
|
||||
// Set variable defaults
|
||||
for (auto& variable : p->variables_)
|
||||
{
|
||||
|
|
@ -111,6 +118,14 @@ bool SettingsCategory::ReadJson(const boost::json::object& json)
|
|||
}
|
||||
}
|
||||
|
||||
// Read subcategories
|
||||
for (auto& subcategory : p->subcategories_)
|
||||
{
|
||||
(void) subcategory;
|
||||
// TODO:
|
||||
// subcategory->ReadJson(object);
|
||||
}
|
||||
|
||||
// Read variables
|
||||
for (auto& variable : p->variables_)
|
||||
{
|
||||
|
|
@ -154,6 +169,14 @@ void SettingsCategory::WriteJson(boost::json::object& json) const
|
|||
object.insert_or_assign(subcategoryArray.first, arrayObject);
|
||||
}
|
||||
|
||||
// Write subcategories
|
||||
for (auto& subcategory : p->subcategories_)
|
||||
{
|
||||
(void) subcategory;
|
||||
// TODO:
|
||||
// subcategory->WriteJson();
|
||||
}
|
||||
|
||||
// Write variables
|
||||
for (auto& variable : p->variables_)
|
||||
{
|
||||
|
|
@ -163,6 +186,11 @@ void SettingsCategory::WriteJson(boost::json::object& json) const
|
|||
json.insert_or_assign(p->name_, object);
|
||||
}
|
||||
|
||||
void SettingsCategory::RegisterSubcategory(SettingsCategory& subcategory)
|
||||
{
|
||||
p->subcategories_.push_back(&subcategory);
|
||||
}
|
||||
|
||||
void SettingsCategory::RegisterSubcategoryArray(
|
||||
const std::string& name, std::vector<SettingsCategory>& subcategories)
|
||||
{
|
||||
|
|
@ -175,6 +203,18 @@ void SettingsCategory::RegisterSubcategoryArray(
|
|||
[](SettingsCategory& subcategory) { return &subcategory; });
|
||||
}
|
||||
|
||||
void SettingsCategory::RegisterSubcategoryArray(
|
||||
const std::string& name, std::vector<SettingsCategory*>& subcategories)
|
||||
{
|
||||
auto& newSubcategories = p->subcategoryArrays_.emplace_back(
|
||||
name, std::vector<SettingsCategory*> {});
|
||||
|
||||
std::transform(subcategories.begin(),
|
||||
subcategories.end(),
|
||||
std::back_inserter(newSubcategories.second),
|
||||
[](SettingsCategory* subcategory) { return subcategory; });
|
||||
}
|
||||
|
||||
void SettingsCategory::RegisterVariables(
|
||||
std::initializer_list<SettingsVariableBase*> variables)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,8 +50,11 @@ public:
|
|||
*/
|
||||
virtual void WriteJson(boost::json::object& json) const;
|
||||
|
||||
void RegisterSubcategory(SettingsCategory& subcategory);
|
||||
void RegisterSubcategoryArray(const std::string& name,
|
||||
std::vector<SettingsCategory>& subcategories);
|
||||
void RegisterSubcategoryArray(const std::string& name,
|
||||
std::vector<SettingsCategory*>& subcategories);
|
||||
void
|
||||
RegisterVariables(std::initializer_list<SettingsVariableBase*> variables);
|
||||
void RegisterVariables(std::vector<SettingsVariableBase*> variables);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue