Beispiel #1
0
        public void RefreshXmls()
        {
            SplitPanels.Panel1.Controls.Clear();
            SplitPanels.Panel2.Controls.Clear();

            var i = 0;

            MainTab.Controls.Remove(XmlPanel);

            XmlPanel = new Panel()
            {
                AutoScroll  = true,
                BackColor   = SystemColors.Info,
                BorderStyle = BorderStyle.Fixed3D,
                Location    = new Point(550, 202),
                Name        = "XmlPanel",
                Size        = new Size(220, 335),
                TabIndex    = 1
            };

            MainTab.Controls.Add(XmlPanel);

            foreach (var xml in XmlLibrary.Xmls.OrderBy(name => name.Key))
            {
                var objects    = new List <ObjectsContent>();
                var items      = new List <ItemsContent>();
                var tiles      = new List <TilesContent>();
                var name       = xml.Key;
                var xmlcontent = xml.Value.Value;

                if (xmlcontent != null)
                {
                    foreach (var elem in xmlcontent.XPathSelectElements("//Object"))
                    {
                        switch ((ContentType)int.Parse(elem.Attribute("type").Value))
                        {
                        case ContentType.Objects: objects.Add(new ObjectsContent(elem)); break;

                        case ContentType.Items: items.Add(new ItemsContent(elem)); break;

                        case ContentType.Tiles: tiles.Add(new TilesContent(elem)); break;
                        }
                    }
                }

                if (!XmlObjects.ContainsKey(name))
                {
                    XmlObjects.Add(name, objects);
                }
                if (!XmlItems.ContainsKey(name))
                {
                    XmlItems.Add(name, items);
                }
                if (!XmlTiles.ContainsKey(name))
                {
                    XmlTiles.Add(name, tiles);
                }

                var xobjects = XmlObjects[name];
                var xitems   = XmlItems[name];
                var xtiles   = XmlTiles[name];
                var palletes = new List <KeyValuePair <int, SpritePallete> >();
                var columns  = new List <int>()
                {
                    4, 43, 82, 121, 160, 199
                };
                var row    = 0;
                var column = 0;

                foreach (var xobject in xobjects)
                {
                    var xobjectpallete = new SpritePallete()
                    {
                        Origin   = name,
                        Type     = ContentType.Objects,
                        Id       = xobject.Id,
                        Name     = "spritepallete",
                        Size     = new Size(33, 33),
                        TabIndex = 2,
                        Image    = Spritesheets[xobject.TextureData.File].Image[xobject.TextureData.X, xobject.TextureData.Y]
                    };

                    palletes.Add(new KeyValuePair <int, SpritePallete>(xobject.Id, xobjectpallete));
                }

                foreach (var xitem in xitems)
                {
                    var xitempallete = new SpritePallete()
                    {
                        Origin   = name,
                        Type     = ContentType.Items,
                        Id       = xitem.Id,
                        Name     = "spritepallete",
                        Size     = new Size(33, 33),
                        TabIndex = 2,
                        Image    = Spritesheets[xitem.TextureData.File].Image[xitem.TextureData.X, xitem.TextureData.Y]
                    };

                    palletes.Add(new KeyValuePair <int, SpritePallete>(xitem.Id, xitempallete));
                }

                foreach (var xtile in xtiles)
                {
                    var xtilepallete = new SpritePallete()
                    {
                        Origin   = name,
                        Type     = ContentType.Tiles,
                        Id       = xtile.Id,
                        Name     = "spritepallete",
                        Size     = new Size(33, 33),
                        TabIndex = 2,
                        Image    = Spritesheets[xtile.TextureData.File].Image[xtile.TextureData.X, xtile.TextureData.Y]
                    };

                    palletes.Add(new KeyValuePair <int, SpritePallete>(xtile.Id, xtilepallete));
                }

                foreach (var pallete in palletes.OrderBy(id => id.Key))
                {
                    var sampleobject = xobjects.FirstOrDefault(sample => sample.Id == pallete.Key);
                    var sampleitem   = xitems.FirstOrDefault(sample => sample.Id == pallete.Key);
                    var sampletile   = xtiles.FirstOrDefault(sample => sample.Id == pallete.Key);

                    ItemControl itemcontrol = null;

                    if (sampleobject != null)
                    {
                        itemcontrol = new ItemControl(pallete.Value, name, sampleobject);
                    }

                    if (sampleitem != null)
                    {
                        itemcontrol = new ItemControl(pallete.Value, name, sampleitem);
                    }

                    if (sampletile != null)
                    {
                        itemcontrol = new ItemControl(pallete.Value, name, sampletile);
                    }

                    itemcontrol.Location = new Point(0, 0);
                    itemcontrol.Name     = "itemcontrol";
                    itemcontrol.Size     = new Size(295, 534);
                    itemcontrol.TabIndex = 2;

                    pallete.Value.Location    = new Point(columns[column], 3 + row * 39);
                    pallete.Value.ItemControl = itemcontrol;
                    pallete.Value.Action      = () =>
                    {
                        SplitPanels.Panel2.Controls.Clear();

                        if (pallete.Value.ItemControl != null)
                        {
                            SplitPanels.Panel2.Controls.Add(pallete.Value.ItemControl);
                        }
                    };

                    column++;

                    if (column == columns.Count)
                    {
                        column = 0;
                        row++;
                    }
                }

                var xmlobject = new XmlObject()
                {
                    Location   = new Point(3, 3 + i * 42),
                    Name       = "xmlobject",
                    Size       = new Size(188, 36),
                    TabIndex   = 2,
                    Id         = i,
                    XmlContent = xml.Value.Value,
                    FileName   = xml.Key,
                    FileSize   = xml.Value.Key,
                    Palletes   = palletes.OrderBy(id => id.Key).Select(pallete => pallete.Value).ToList()
                };
                xmlobject.Action = () =>
                {
                    SplitPanels.Panel1.Controls.Clear();
                    SplitPanels.Panel2.Controls.Clear();

                    foreach (var pallete in xmlobject.Palletes)
                    {
                        pallete.ParentId = xmlobject.Id;

                        SplitPanels.Panel1.Controls.Add(pallete);
                    }

                    WorkingTitleLabel.Text   = "Working on...";
                    WorkingContentLabel.Text = xml.Key;
                };

                XmlPanel.Controls.Add(xmlobject);

                i++;
            }
        }
Beispiel #2
0
        public void AddOrRemoveXml(int id, string name = null)
        {
            SplitPanels.Panel1.Controls.Clear();
            SplitPanels.Panel2.Controls.Clear();

            var xmlobjects = new List <XmlObject>();
            var i          = 0;
            var target     = string.Empty;

            foreach (var xmlobject in Array.ConvertAll(XmlPanel.Controls.Find("xmlobject", true), xmlobject => (XmlObject)xmlobject))
            {
                if (xmlobject.Id != id)
                {
                    var newxmlobject = new XmlObject()
                    {
                        Location   = new Point(3, 3 + i * 42),
                        Name       = "xmlobject",
                        Size       = new Size(188, 36),
                        TabIndex   = 2,
                        Id         = xmlobject.Id,
                        XmlContent = xmlobject.XmlContent,
                        FileName   = xmlobject.FileName,
                        FileSize   = xmlobject.FileSize,
                        Palletes   = xmlobject.Palletes
                    };
                    newxmlobject.Action = () =>
                    {
                        SplitPanels.Panel1.Controls.Clear();

                        foreach (var pallete in newxmlobject.Palletes)
                        {
                            pallete.ParentId = newxmlobject.Id;

                            SplitPanels.Panel1.Controls.Add(pallete);
                        }

                        WorkingTitleLabel.Text   = "Working on...";
                        WorkingContentLabel.Text = newxmlobject.FileName;
                    };
                    xmlobjects.Add(newxmlobject);

                    i++;
                }
                else
                {
                    target = xmlobject.FileName;
                }
            }

            if (name != null)
            {
                var xmlobject = new XmlObject()
                {
                    Location   = new Point(3, 3 + i * 42),
                    Name       = "xmlobject",
                    Size       = new Size(188, 36),
                    TabIndex   = 2,
                    Id         = i,
                    XmlContent = null,
                    FileName   = name,
                    FileSize   = "<new>",
                    Palletes   = new List <SpritePallete>()
                };
                xmlobject.Action = () =>
                {
                    SplitPanels.Panel1.Controls.Clear();

                    WorkingTitleLabel.Text   = string.Empty;
                    WorkingContentLabel.Text = "This XML document is empty!";
                };

                XmlObjects.Add(name, new List <ObjectsContent>());
                XmlItems.Add(name, new List <ItemsContent>());
                XmlTiles.Add(name, new List <TilesContent>());

                xmlobjects.Add(xmlobject);
            }

            MainTab.Controls.Remove(XmlPanel);

            XmlPanel = new Panel()
            {
                AutoScroll  = true,
                BackColor   = SystemColors.Info,
                BorderStyle = BorderStyle.Fixed3D,
                Location    = new Point(550, 202),
                Name        = "XmlPanel",
                Size        = new Size(220, 335),
                TabIndex    = 1
            };

            MainTab.Controls.Add(XmlPanel);

            i = 0;

            foreach (var xmlobject in xmlobjects.OrderBy(xml => xml.FileName))
            {
                xmlobject.Location = new Point(3, 3 + i * 42);

                XmlPanel.Controls.Add(xmlobject);

                i++;
            }

            WorkingTitleLabel.Text   = string.Empty;
            WorkingContentLabel.Text = string.Empty;
            XmlCountLabel.Text       = XmlPanel.Controls.Count.ToString();

            if (target != string.Empty)
            {
                XmlLibrary.RemovedXmls.Add(target);
                XmlLibrary.Xmls.Remove(target);
            }
        }