private static FlagBase CreateFlagFromXmlNode(XElement node) { FlagBase newFlag = null; switch (node.Name.ToString()) { case GoalFlag.Save_Node_Name: newFlag = Factory.CreateGoalFlag(node.Attribute("texture").Value); newFlag.CollisionZoneTopOffset = (float)node.Attribute("zone-top"); break; case CheckpointFlag.Save_Node_Name: newFlag = Factory.CreateRestartFlag(node.Attribute("texture").Value); newFlag.CollisionZoneTopOffset = (float)node.Attribute("zone-top"); if (node.Attribute("index") != null) { ((CheckpointFlag)newFlag).CheckpointIndex = (int)node.Attribute("index"); } break; } if (newFlag != null) { newFlag.GroupNodeName = Data_Group_Node_Name; } return(newFlag); }
public static void LoadFlags(XElement FlagDataGroup, Data.RegistrationCallback registerComponent) { if (FlagDataGroup != null) { foreach (XElement node in FlagDataGroup.Elements()) { FlagBase toAdd = CreateFlagFromXmlNode(node); toAdd.WorldPosition = new Vector2((float)node.Attribute("x"), (float)node.Attribute("y")); if (node.Attribute("left-activation") != null) { toAdd.ActivatedWhenMovingLeft = (bool)node.Attribute("left-activation"); } registerComponent(toAdd); } } }