public override void LoadXml(XElement xmlNode) { string spriteName = "Default"; string partName = null; XAttribute spriteNameAttr = xmlNode.Attribute("name"); if (spriteNameAttr != null) { spriteName = spriteNameAttr.Value; } XAttribute partAttr = xmlNode.Attribute("part"); if (partAttr != null) { partName = partAttr.Value; } if (xmlNode.Attribute("tilesheet") != null) // explicitly specified sheet for this sprite { _sheetPath = System.IO.Path.Combine(Game.CurrentGame.BasePath, xmlNode.RequireAttribute("tilesheet").Value); } Sprite sprite = GameXmlReader.LoadSprite(xmlNode); sprite.SheetPath = FilePath.FromAbsolute(_sheetPath, Game.CurrentGame.BasePath); Add(spriteName, sprite, partName); }
public static Sprite GetSpriteFromFile(string filename, string basePath = null) { String xmlInput = TestHelpers.GetInputFile(filename); var xmlNode = XElement.Parse(xmlInput); if (basePath == null) { return(GameXmlReader.LoadSprite(xmlNode)); } else { return(GameXmlReader.LoadSprite(xmlNode, basePath)); } }
public void Load(Project project, XElement xmlNode) { foreach (var node in xmlNode.Elements("Entity")) { var info = new EntityInfo() { Name = node.RequireAttribute("name").Value, MaxAlive = node.TryAttribute <int>("maxAlive", 50) }; var editorData = node.Element("EditorData"); if (editorData != null) { info.EditorData = new EntityEditorData() { DefaultSpriteName = editorData.TryAttribute <string>("defaultSprite"), HideFromPlacement = editorData.TryAttribute <bool>("hide", false) }; } FilePath sheetPath = null; var sheetNode = node.Element("Tilesheet"); if (sheetNode != null) { sheetPath = FilePath.FromRelative(sheetNode.Value, project.BaseDir); } foreach (var spriteNode in node.Elements("Sprite")) { if (sheetPath == null) { var sprite = GameXmlReader.LoadSprite(spriteNode, project.BaseDir); info.Sprites.Add(sprite.Name ?? "Default", sprite); } else { var sprite = GameXmlReader.LoadSprite(spriteNode); sprite.SheetPath = sheetPath; info.Sprites.Add(sprite.Name ?? "Default", sprite); } } project.AddEntity(info); } }