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(); }
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(); }
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++; } }
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; } } }