コード例 #1
0
        public void LoadSpriteSheetProject(SpriteSheetProject spriteSheetProject)
        {
            projectTree.Nodes.Clear();

            TreeNode projectNode = new TreeNode(spriteSheetProject.ProjectName);

            projectNode.Name             = "ProjectNode";
            projectNode.SelectedImageKey = projectNode.ImageKey = "project.png";

            foreach (SpriteSheet ss in spriteSheetProject.SpriteSheets)
            {
                AddSpriteSheet(projectNode, ss);
            }

            projectTree.Nodes.Add(projectNode);
        }
コード例 #2
0
        public void ExportSpriteSheet(SpriteSheetProject project)
        {
            using (FolderBrowserDialog fbd = new FolderBrowserDialog())
            {
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    foreach (SpriteSheet ss in project.SpriteSheets)
                    {
                        XmlDocument    doc = new XmlDocument();
                        XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", "");
                        doc.AppendChild(dec);
                        XmlElement   spriteSheetElement = doc.CreateElement("SpriteSheet");
                        XmlAttribute name = doc.CreateAttribute("name");

                        name.Value = ss.Name;
                        spriteSheetElement.Attributes.Append(name);
                        doc.AppendChild(spriteSheetElement);

                        IList <Rectangle> rects = new List <Rectangle>();

                        Image packed = SpritePacker.PackSprites(ss.Sprites, rects);

                        XmlElement spritesElement = doc.CreateElement("Sprites");
                        spriteSheetElement.AppendChild(spritesElement);

                        for (int i = 0; i < ss.Sprites.Count; i++)
                        {
                            XmlElement spriteElement = doc.CreateElement("Sprite");

                            name       = doc.CreateAttribute("name");
                            name.Value = ss.Sprites[i].Name;

                            XmlAttribute x      = doc.CreateAttribute("x");
                            XmlAttribute y      = doc.CreateAttribute("y");
                            XmlAttribute height = doc.CreateAttribute("height");
                            XmlAttribute width  = doc.CreateAttribute("width");

                            x.Value      = rects[i].X.ToString();
                            y.Value      = rects[i].Y.ToString();
                            height.Value = rects[i].Height.ToString();
                            width.Value  = rects[i].Width.ToString();

                            spriteElement.Attributes.Append(name);
                            spriteElement.Attributes.Append(x);
                            spriteElement.Attributes.Append(y);
                            spriteElement.Attributes.Append(width);
                            spriteElement.Attributes.Append(height);

                            spritesElement.AppendChild(spriteElement);
                        }

                        XmlElement animationsElement = doc.CreateElement("Animations");
                        spriteSheetElement.AppendChild(animationsElement);

                        foreach (Animation a in ss.Animations)
                        {
                            XmlElement animationElement = doc.CreateElement("Animation");
                            name       = doc.CreateAttribute("name");
                            name.Value = a.Name;

                            XmlAttribute fps = doc.CreateAttribute("fps");
                            fps.Value = a.Framerate.ToString();

                            animationElement.Attributes.Append(name);
                            animationElement.Attributes.Append(fps);

                            animationsElement.AppendChild(animationElement);

                            foreach (Sprite s in a.Sprites)
                            {
                                XmlElement spriteElement = doc.CreateElement("Sprite");
                                name       = doc.CreateAttribute("name");
                                name.Value = s.Name;

                                spriteElement.Attributes.Append(name);

                                animationElement.AppendChild(spriteElement);
                            }
                        }

                        XmlElement   dataElement = doc.CreateElement("SpriteSheetImage");
                        XmlAttribute w           = doc.CreateAttribute("width");
                        XmlAttribute h           = doc.CreateAttribute("height");

                        w.Value = packed.Width.ToString();
                        h.Value = packed.Height.ToString();
                        spriteSheetElement.Attributes.Append(w);
                        spriteSheetElement.Attributes.Append(h);

                        dataElement.InnerText = Convert.ToBase64String(ImageToByteArray(packed));

                        spriteSheetElement.AppendChild(dataElement);

                        doc.Save(fbd.SelectedPath + "\\" + ss.Name + ".sps");
                    }
                }
            }
        }
コード例 #3
0
 public SpriteSheetDialog(SpriteSheetProject project, SpriteSheet spriteSheet)
 {
     InitializeComponent();
     this.project     = project;
     this.spriteSheet = spriteSheet;
 }