4 using Microsoft.Xna.Framework;
5 using System.Collections.Generic;
6 using System.Globalization;
12 partial class LevelObjectPrefab : PrefabWithUintIdentifier, ISerializableEntity
48 } =
new List<SoundConfig>();
68 } =
new List<SpriteDeformation>();
72 LoadElementsProjSpecific(element, -1);
75 private void LoadElementsProjSpecific(ContentXElement element,
int parentTriggerIndex)
77 foreach (var subElement
in element.Elements())
79 switch (subElement.Name.ToString().ToLowerInvariant())
89 case "particleemitter":
99 EmitterPositions.Add(subElement.GetAttributeVector2(
"position", Vector2.Zero));
102 Sounds.Add(
new SoundConfig(subElement, parentTriggerIndex));
104 case "deformablesprite":
105 foreach (XElement deformElement
in subElement.Elements())
108 if (deformation !=
null)
118 public void Save(XElement element)
124 foreach (var subElement
in element.Elements().ToList())
126 switch (subElement.Name.ToString().ToLowerInvariant())
131 case "deformablesprite":
132 subElement.RemoveNodes();
135 var deformationElement =
new XElement(
"SpriteDeformation");
136 deformation.
Save(deformationElement);
137 subElement.Add(deformationElement);
145 int elementIndex = 0;
146 bool wasSaved =
false;
147 foreach (var subElement
in element.Elements().ToList())
149 switch (subElement.Name.ToString().ToLowerInvariant())
152 if (elementIndex == i)
164 var lightElement =
new XElement(
"LightSource");
166 element.Add(lightElement);
172 element.Add(
new XElement(
"ChildObject",
173 new XAttribute(
"names",
string.Join(
", ", childObj.
AllowedNames)),
174 new XAttribute(
"mincount", childObj.
MinCount),
175 new XAttribute(
"maxcount", childObj.MaxCount)));
180 bool elementFound =
false;
181 foreach (var subElement
in element.Elements())
183 if (subElement.Name.ToString().Equals(
"overridecommonness", System.StringComparison.OrdinalIgnoreCase)
184 && subElement.GetAttributeIdentifier(
"leveltype",
Identifier.Empty) == overrideCommonness.Key)
186 subElement.Attribute(
"commonness").Value = overrideCommonness.Value.ToString(
"G", CultureInfo.InvariantCulture);
193 element.Add(
new XElement(
"overridecommonness",
194 new XAttribute(
"leveltype", overrideCommonness.Key),
195 new XAttribute(
"commonness", overrideCommonness.Value.ToString(
"G", CultureInfo.InvariantCulture))));
Vector2 GetAttributeVector2(string key, in Vector2 def)
List< string > AllowedNames
readonly int TriggerIndex
SoundConfig(ContentXElement element, int triggerIndex)
readonly ContentXElement SoundElement
readonly Vector2 Position
List< int > LightSourceTriggerIndex
List< LightSourceParams > LightSourceParams
readonly List< ContentXElement > LevelTriggerElements
List< SoundConfig > Sounds
List< SpriteDeformation > SpriteDeformations
Only used for editing sprite deformation parameters. The actual LevelObjects use separate SpriteDefor...
List< ParticleEmitterPrefab > ParticleEmitterPrefabs
List< int > ParticleEmitterTriggerIndex
readonly Dictionary< Identifier, float > OverrideCommonness
Overrides the commonness of the object in a specific level type. Key = name of the level type,...
List< ChildObject > ChildObjects
void Save(XElement element)
List< Vector2 > EmitterPositions
LightSourceParams(ContentXElement element)
readonly Identifier Identifier
static void SerializeProperties(ISerializableEntity obj, XElement element, bool saveIfDefault=false, bool ignoreEditable=false)