Exemplo n.º 1
0
        private void SpritesheetForm_Load(object sender, EventArgs e)
        {
            _spritedatas = new Dictionary <int, SpriteData>();
            _sprites     = Manager.Spritesheets[File];

            Width  = _sprites.Width * 17 * 2 + X_MAGIC_NUMBER;
            Height = _sprites.Height * 17 * 2 + Y_MAGIC_NUMBER;

            if (Width >= MAX_SIZE)
            {
                Width = MAX_SIZE;
            }
            if (Height >= MAX_SIZE)
            {
                Height = MAX_SIZE;
            }

            var id = 0;

            for (var x = 0; x < _sprites.Width; x++)
            {
                for (var y = 0; y < _sprites.Height; y++)
                {
                    var image         = _sprites.Image[x, y];
                    var spritepallete = new SpritePallete()
                    {
                        Id       = id,
                        Location = new Point(2 + x * 33, 2 + y * 33),
                        Name     = "spritepallete",
                        Size     = new Size(33, 33),
                        TabIndex = 2,
                        Image    = image
                    };
                    spritepallete.Action = () => Invoke((MethodInvoker) delegate()
                    {
                        var spritedata = _spritedatas[spritepallete.Id];
                        X     = spritedata.X;
                        Y     = spritedata.Y;
                        Image = spritedata.Image;

                        DialogResult = DialogResult.OK;
                    });

                    _spritedatas.Add(id, new SpriteData()
                    {
                        X     = x,
                        Y     = y,
                        Image = image
                    });

                    Controls.Add(spritepallete);

                    id++;
                }
            }

            Text = $"Spritesheet: '{File}'.";

            CenterToScreen();
        }
Exemplo n.º 2
0
        public void InitControl()
        {
            RefreshGRPIcon();

            mapDataBinding = new MapDataBinding(this);

            StyleChange();


            LocationList.ItemsSource = mapdata.LocationDatas;
            LocationList.Items.SortDescriptions.Add(new SortDescription("INDEX", ListSortDirection.Ascending));

            UnitPlaceList.ItemsSource = IndexedUnitList;
            UnitPlaceList.Items.SortDescriptions.Add(new SortDescription("INDEX", ListSortDirection.Ascending));


            Scenario.Init(this);

            refreshLocBox();
            uIBinding                       = new UIBinding(this);
            uIBinding.view_Tile             = true;
            uIBinding.view_Unit             = true;
            uIBinding.view_Unit_StartLoc    = true;
            uIBinding.view_Unit_Maprevealer = true;
            uIBinding.view_Doodad           = true;
            uIBinding.view_Sprite           = true;
            Toolbar.DataContext             = uIBinding;

            this.DataContext = mapDataBinding;

            UnitPallete.SetCodeType(Codetype.Unit, this);
            SpritePallete.SetCodeType(Codetype.Sprite, this);
            SpritePallete_Unit.SetCodeType(Codetype.Unit, this);

            UnitPallete.SelectionChanged        += UnitPallete_SelectionChanged;
            SpritePallete.SelectionChanged      += SpritePallete_SelectionChanged;
            SpritePallete_Unit.SelectionChanged += SpritePallete_SelectionChanged;

            UnitPallete.SelectIndex        = 0;
            SpritePallete.SelectIndex      = 0;
            SpritePallete_Unit.SelectIndex = 0;
            TileSetUIRefresh();
        }
Exemplo n.º 3
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++;
            }
        }
Exemplo n.º 4
0
        public void RemoveFromXml(int parentId, int id)
        {
            var palletes = new List <SpritePallete>();
            var columns  = new List <int>()
            {
                4, 43, 82, 121, 160, 199
            };
            var row    = 0;
            var column = 0;
            var target = new KeyValuePair <string, ContentType>();

            foreach (var pallete in Array.ConvertAll(SplitPanels.Panel1.Controls.Find("spritepallete", true), pallete => (SpritePallete)pallete))
            {
                if (pallete.Id != id)
                {
                    var newpallete = new SpritePallete()
                    {
                        Origin   = pallete.Origin,
                        Type     = pallete.Type,
                        Id       = pallete.Id,
                        Name     = "spritepallete",
                        Size     = new Size(33, 33),
                        TabIndex = 2,
                        Image    = pallete.Image
                    };

                    var sampleobject = pallete.ItemControl.ObjectsContent;
                    var sampleitem   = pallete.ItemControl.ItemsContent;
                    var sampletile   = pallete.ItemControl.TilesContent;

                    if (sampleobject != null)
                    {
                        newpallete.ItemControl = new ItemControl(newpallete, newpallete.Origin, sampleobject);
                    }

                    if (sampleitem != null)
                    {
                        newpallete.ItemControl = new ItemControl(newpallete, newpallete.Origin, sampleobject);
                    }

                    if (sampletile != null)
                    {
                        newpallete.ItemControl = new ItemControl(newpallete, newpallete.Origin, sampletile);
                    }

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

                    pallete.ItemControl.Dispose();
                    pallete.Dispose();

                    palletes.Add(newpallete);
                }
                else
                {
                    target = new KeyValuePair <string, ContentType>(pallete.Origin, pallete.Type);
                }
            }

            SplitPanels.Panel1.Controls.Clear();
            SplitPanels.Panel2.Controls.Clear();

            foreach (var pallete in palletes.OrderBy(i => i.Id))
            {
                pallete.Location = new Point(columns[column], 3 + row * 39);
                pallete.Action   = () =>
                {
                    SplitPanels.Panel2.Controls.Clear();

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

                SplitPanels.Panel1.Controls.Add(pallete);

                column++;

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

            try
            {
                switch (target.Value)
                {
                case ContentType.Objects: XmlObjects[target.Key].RemoveAt(XmlObjects[target.Key].FindIndex(xobject => xobject.Id == id)); break;

                case ContentType.Items: XmlItems[target.Key].RemoveAt(XmlItems[target.Key].FindIndex(xitem => xitem.Id == id)); break;

                case ContentType.Tiles: XmlTiles[target.Key].RemoveAt(XmlTiles[target.Key].FindIndex(xtile => xtile.Id == id)); break;
                }
            }
            catch (Exception e) { App.Warn($"An error occurred along SpritePallete remotion:\n{e}"); }

            foreach (var xmlobject in Array.ConvertAll(XmlPanel.Controls.Find("xmlobject", true), xmlobject => (XmlObject)xmlobject))
            {
                if (xmlobject.Id == parentId)
                {
                    xmlobject.Palletes = palletes;
                    xmlobject.Action   = () =>
                    {
                        SplitPanels.Panel1.Controls.Clear();

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

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

                        WorkingTitleLabel.Text   = "Working on...";
                        WorkingContentLabel.Text = target.Key;
                    };
                    break;
                }
            }
        }