@@ -95,29 +95,33 @@ void LoadConfigPart(std::string key, rapidjson::Value &document);
9595
9696void LoadValue (const char *key, const char *keyname, rapidjson::Value &value, std::string separator = " ." )
9797{
98+ std::string k = key + separator + keyname;
9899 if (value.IsBool ())
99- g_Config->SetValue (key + separator + keyname , value.GetBool ());
100+ g_Config->SetValue (k , value.GetBool ());
100101 else if (value.IsString ())
101- g_Config->SetValue (key + separator + keyname , std::string (value.GetString ()));
102+ g_Config->SetValue (k , std::string (value.GetString ()));
102103 else if (value.IsDouble ())
103- g_Config->SetValue (key + separator + keyname , value.GetDouble ());
104+ g_Config->SetValue (k , value.GetDouble ());
104105 else if (value.IsFloat ())
105- g_Config->SetValue (key + separator + keyname , value.GetFloat ());
106+ g_Config->SetValue (k , value.GetFloat ());
106107 else if (value.IsInt64 ())
107- g_Config->SetValue (key + separator + keyname , value.GetInt64 ());
108+ g_Config->SetValue (k , value.GetInt64 ());
108109 else if (value.IsInt ())
109- g_Config->SetValue (key + separator + keyname , value.GetInt ());
110+ g_Config->SetValue (k , value.GetInt ());
110111 else if (value.IsUint64 ())
111- g_Config->SetValue (key + separator + keyname , value.GetUint64 ());
112+ g_Config->SetValue (k , value.GetUint64 ());
112113 else if (value.IsUint ())
113- g_Config->SetValue (key + separator + keyname , value.GetUint ());
114+ g_Config->SetValue (k , value.GetUint ());
114115 else if (value.IsNull ())
115- g_Config->SetValue (key + separator + keyname , nullptr );
116+ g_Config->SetValue (k , nullptr );
116117 else if (value.IsObject ())
117- LoadConfigPart (key + separator + keyname , value);
118+ LoadConfigPart (k , value);
118119 else if (value.IsArray ())
120+ {
121+ g_Config->SetArraySize (k, value.Size ());
119122 for (size_t i = 0 ; i < value.Size (); i++)
120- LoadValue ((key + separator + keyname).c_str (), string_format (" [%d]" , i).c_str (), value[i], " " );
123+ LoadValue (k.c_str (), string_format (" [%d]" , i).c_str (), value[i], " " );
124+ }
121125};
122126
123127void LoadConfigPart (std::string key, rapidjson::Value &document)
@@ -129,6 +133,11 @@ void LoadConfigPart(std::string key, rapidjson::Value &document)
129133 }
130134}
131135
136+ void Configuration::SetArraySize (std::string key, unsigned int size)
137+ {
138+ this ->configArraySizes .insert (std::make_pair (key, size));
139+ }
140+
132141void Configuration::LoadPluginConfigurations ()
133142{
134143 std::vector<std::string> configFiles = Files::FetchFileNames (" addons/swiftly/configs/plugins" );
0 commit comments