コード例 #1
0
        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);
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
            }
        }