public static Level fromXML(XmlElement node, Game gameref, String campaignPath) { Level newLvl = new Level(); newLvl.number = int.Parse(node.GetElementsByTagName("number")[0].FirstChild.Value); if (node.HasAttribute("autoProgress")) { newLvl.autoProgress = bool.Parse(node.GetAttribute("autoProgress")); } newLvl.name = node.GetAttribute("name"); foreach (string singleAdj in node.GetElementsByTagName("adj")[0].FirstChild.Value.Split(',')) { newLvl.adjacent.Add(Int32.Parse(singleAdj)); } XmlNodeList list = node.GetElementsByTagName("prereq"); if (list.Count > 0 && list[0].FirstChild != null) { foreach (string singlePrereq in node.GetElementsByTagName("prereq")[0].FirstChild.Value.Split(',')) { newLvl.prereq.Add(Int32.Parse(singlePrereq)); } } newLvl.loc = XMLUtil.fromXMLVector2(node.GetElementsByTagName("location")[0]); if (node.GetElementsByTagName("horizonPath").Count > 0) { newLvl.horizon = gameref.Content.Load <Texture2D>(campaignPath + node.GetElementsByTagName("horizonPath")[0].FirstChild.Value); } if (node.GetElementsByTagName("items").Count > 0) { foreach (XmlElement item in node.GetElementsByTagName("items")[0].ChildNodes) { newLvl.items.Add(GameItem.fromXML(item)); } } if (node.GetElementsByTagName("spawns").Count > 0) { foreach (XmlElement item in node.GetElementsByTagName("spawns")[0].ChildNodes) { newLvl.spawns.Add(SpawnPoint.fromXML(item)); } } XmlNodeList storyNodes = node.GetElementsByTagName("story"); if (storyNodes.Count > 0 && storyNodes[0].ChildNodes.Count > 0) { foreach (XmlNode item in storyNodes[0].ChildNodes) { newLvl.storyElements.Add(StoryElement.fromXML(item, gameref)); } } newLvl.levelLength = int.Parse(node.GetAttribute("length")); foreach (XmlElement graphic in node.GetElementsByTagName("graphic")) { newLvl.backgroundItems.Add(BackgroundItemStruct.fromXML(graphic)); } return(newLvl); }
public SpawnPoint Clone() { return(SpawnPoint.fromXML(fromNode)); }