/** GDevelop - Platform Behavior Extension Copyright (c) 2014-2016 Florian Rival (Florian.Rival@gmail.com) This project is released under the MIT License. */ #include "PlatformBehavior.h" #include #include "GDCore/Tools/Localization.h" #include "GDCore/CommonTools.h" #include "GDCore/Project/Layout.h" #include "GDCore/Serialization/SerializerElement.h" #if defined(GD_IDE_ONLY) #include #include #include "GDCore/Project/PropertyDescriptor.h" #endif void PlatformBehavior::InitializeContent( gd::SerializerElement& behaviorContent) { behaviorContent.SetAttribute("platformType", "NormalPlatform"); behaviorContent.SetAttribute("canBeGrabbed", true); behaviorContent.SetAttribute("yGrabOffset", 0); } #if defined(GD_IDE_ONLY) std::map PlatformBehavior::GetProperties( const gd::SerializerElement& behaviorContent) const { std::map properties; gd::String platformType = behaviorContent.GetStringAttribute("platformType"); properties["PlatformType"] .SetLabel(_("Type")) .SetValue(platformType.empty() ? "NormalPlatform" : platformType) .SetType("Choice") .AddChoice("NormalPlatform", _("Platform")) .AddChoice("Jumpthru", _("Jumpthru platform")) .AddChoice("Ladder", _("Ladder")); properties["CanBeGrabbed"] .SetLabel(_("Ledges can be grabbed")) .SetGroup(_("Ledge")) .SetValue(behaviorContent.GetBoolAttribute("canBeGrabbed", true) ? "true" : "false") .SetType("Boolean"); properties["YGrabOffset"] .SetLabel(_("Grab offset on Y axis")) .SetGroup(_("Ledge")) .SetValue( gd::String::From(behaviorContent.GetDoubleAttribute("yGrabOffset"))); return properties; } bool PlatformBehavior::UpdateProperty(gd::SerializerElement& behaviorContent, const gd::String& name, const gd::String& value) { if (name == "CanBeGrabbed") behaviorContent.SetAttribute("canBeGrabbed", (value == "1")); else if (name == "PlatformType") { auto normalizedValue = value.LowerCase(); if (normalizedValue == "jumpthru") behaviorContent.SetAttribute("platformType", "Jumpthru"); else if (normalizedValue == "ladder") behaviorContent.SetAttribute("platformType", "Ladder"); else behaviorContent.SetAttribute("platformType", "NormalPlatform"); } else if (name == "YGrabOffset") behaviorContent.SetAttribute("yGrabOffset", value.To()); else return false; return true; } #endif