Add update for effects + colors and resources for effect parameters

This commit is contained in:
Florian Rival
2019-12-20 23:28:58 +01:00
committed by Florian Rival
parent 6108088979
commit 977dc27bd0
32 changed files with 525 additions and 165 deletions

View File

@@ -13,20 +13,45 @@ namespace gd {
void Effect::SerializeTo(SerializerElement& element) const {
element.SetAttribute("name", GetName());
element.SetAttribute("effectType", GetEffectType());
SerializerElement& parametersElement = element.AddChild("parameters");
for (auto& parameter : parameters)
parametersElement.AddChild(parameter.first).SetValue(parameter.second);
SerializerElement& doubleParametersElement =
element.AddChild("doubleParameters");
for (auto& parameter : doubleParameters)
doubleParametersElement.AddChild(parameter.first)
.SetValue(parameter.second);
SerializerElement& stringParametersElement =
element.AddChild("stringParameters");
for (auto& parameter : stringParameters)
stringParametersElement.AddChild(parameter.first)
.SetValue(parameter.second);
}
#endif
void Effect::UnserializeFrom(const SerializerElement& element) {
SetName(element.GetStringAttribute("name"));
SetEffectType(element.GetStringAttribute("effectType", "", "effectName"));
SetEffectType(element.GetStringAttribute(
"effectType",
"",
// Compatibility with GD <= 5.0.0-beta83
"effectName"
// end of compatibility code
));
parameters.clear();
const SerializerElement& parametersElement = element.GetChild("parameters");
for (auto& child : parametersElement.GetAllChildren())
SetParameter(child.first, child.second->GetValue().GetDouble());
doubleParameters.clear();
const SerializerElement& doubleParametersElement =
element.GetChild("doubleParameters",
0,
// Compatibility with GD <= 5.0.0-beta83
"parameters"
// end of compatibility code
);
for (auto& child : doubleParametersElement.GetAllChildren())
SetDoubleParameter(child.first, child.second->GetValue().GetDouble());
stringParameters.clear();
const SerializerElement& stringParametersElement =
element.GetChild("stringParameters");
for (auto& child : stringParametersElement.GetAllChildren())
SetStringParameter(child.first, child.second->GetValue().GetString());
}
} // namespace gd