mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 06:50:05 +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*>>> |    std::vector<std::pair<std::string, std::vector<SettingsCategory*>>> | ||||||
|                                       subcategoryArrays_; |                                       subcategoryArrays_; | ||||||
|  |    std::vector<SettingsCategory*>     subcategories_; | ||||||
|    std::vector<SettingsVariableBase*> variables_; |    std::vector<SettingsVariableBase*> variables_; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -54,6 +55,12 @@ void SettingsCategory::SetDefaults() | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|  |    // Set subcategory defaults
 | ||||||
|  |    for (auto& subcategory : p->subcategories_) | ||||||
|  |    { | ||||||
|  |       subcategory->SetDefaults(); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|    // Set variable defaults
 |    // Set variable defaults
 | ||||||
|    for (auto& variable : p->variables_) |    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
 |       // Read variables
 | ||||||
|       for (auto& variable : p->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); |       object.insert_or_assign(subcategoryArray.first, arrayObject); | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|  |    // Write subcategories
 | ||||||
|  |    for (auto& subcategory : p->subcategories_) | ||||||
|  |    { | ||||||
|  |       (void) subcategory; | ||||||
|  |       // TODO:
 | ||||||
|  |       // subcategory->WriteJson();
 | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|    // Write variables
 |    // Write variables
 | ||||||
|    for (auto& variable : p->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); |    json.insert_or_assign(p->name_, object); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void SettingsCategory::RegisterSubcategory(SettingsCategory& subcategory) | ||||||
|  | { | ||||||
|  |    p->subcategories_.push_back(&subcategory); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void SettingsCategory::RegisterSubcategoryArray( | void SettingsCategory::RegisterSubcategoryArray( | ||||||
|    const std::string& name, std::vector<SettingsCategory>& subcategories) |    const std::string& name, std::vector<SettingsCategory>& subcategories) | ||||||
| { | { | ||||||
|  | @ -175,6 +203,18 @@ void SettingsCategory::RegisterSubcategoryArray( | ||||||
|                   [](SettingsCategory& subcategory) { return &subcategory; }); |                   [](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( | void SettingsCategory::RegisterVariables( | ||||||
|    std::initializer_list<SettingsVariableBase*> variables) |    std::initializer_list<SettingsVariableBase*> variables) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -50,8 +50,11 @@ public: | ||||||
|     */ |     */ | ||||||
|    virtual void WriteJson(boost::json::object& json) const; |    virtual void WriteJson(boost::json::object& json) const; | ||||||
| 
 | 
 | ||||||
|  |    void RegisterSubcategory(SettingsCategory& subcategory); | ||||||
|    void RegisterSubcategoryArray(const std::string&             name, |    void RegisterSubcategoryArray(const std::string&             name, | ||||||
|                                  std::vector<SettingsCategory>& subcategories); |                                  std::vector<SettingsCategory>& subcategories); | ||||||
|  |    void RegisterSubcategoryArray(const std::string&              name, | ||||||
|  |                                  std::vector<SettingsCategory*>& subcategories); | ||||||
|    void |    void | ||||||
|    RegisterVariables(std::initializer_list<SettingsVariableBase*> variables); |    RegisterVariables(std::initializer_list<SettingsVariableBase*> variables); | ||||||
|    void RegisterVariables(std::vector<SettingsVariableBase*> variables); |    void RegisterVariables(std::vector<SettingsVariableBase*> variables); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat