private void OnClickRemove(object sender, EventArgs e) { if (TreeViewMulti.SelectedNode == null) { return; } MultiComponentList multi = (MultiComponentList)TreeViewMulti.SelectedNode.Tag; if (multi == MultiComponentList.Empty) { return; } int id = int.Parse(TreeViewMulti.SelectedNode.Name); DialogResult result = MessageBox.Show(string.Format("Are you sure to remove {0} (0x{0:X})", id), "Remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result != DialogResult.Yes) { return; } Multis.Remove(id); TreeViewMulti.SelectedNode.Remove(); Options.ChangedUltimaClass["Multis"] = true; ControlEvents.FireMultiChangeEvent(this, id); }
private void OnClickSave(object sender, EventArgs e) { Multis.Save(Options.OutputPath); MessageBox.Show($"Saved to {Options.OutputPath}", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); Options.ChangedUltimaClass["Multis"] = false; }
private void OnLoad(object sender, EventArgs e) { if (FormsDesignerHelper.IsInDesignMode()) { return; } Cursor.Current = Cursors.WaitCursor; Options.LoadedUltimaClass["TileData"] = true; Options.LoadedUltimaClass["Art"] = true; Options.LoadedUltimaClass["Multis"] = true; Options.LoadedUltimaClass["Hues"] = true; TreeViewMulti.BeginUpdate(); try { TreeViewMulti.Nodes.Clear(); var cache = new List <TreeNode>(); for (int i = 0; i < Multis.MaximumMultiIndex; ++i) { MultiComponentList multi = Multis.GetComponents(i); if (multi == MultiComponentList.Empty) { continue; } TreeNode node; if (_xmlDocument == null) { node = new TreeNode(string.Format("{0,5} (0x{0:X})", i)); } else { XmlNodeList xMultiNodeList = _xmlElementMultis.SelectNodes("/Multis/Multi[@id='" + i + "']"); string j = ""; foreach (XmlNode xMultiNode in xMultiNodeList) { j = xMultiNode.Attributes["name"].Value; } node = new TreeNode($"{i,5} (0x{i:X}) {j}"); xMultiNodeList = _xmlElementMultis.SelectNodes("/Multis/ToolTip[@id='" + i + "']"); foreach (XmlNode xMultiNode in xMultiNodeList) { node.ToolTipText = j + "\r\n" + xMultiNode.Attributes["text"].Value; } if (xMultiNodeList.Count == 0) { node.ToolTipText = j; } } node.Tag = multi; node.Name = i.ToString(); cache.Add(node); } TreeViewMulti.Nodes.AddRange(cache.ToArray()); } finally { TreeViewMulti.EndUpdate(); } if (TreeViewMulti.Nodes.Count > 0) { TreeViewMulti.SelectedNode = TreeViewMulti.Nodes[0]; } if (!_loaded) { ControlEvents.FilePathChangeEvent += OnFilePathChangeEvent; ControlEvents.MultiChangeEvent += OnMultiChangeEvent; } _loaded = true; Cursor.Current = Cursors.Default; }
private void OnClickFreeSlots(object sender, EventArgs e) { _showFreeSlots = !_showFreeSlots; TreeViewMulti.BeginUpdate(); TreeViewMulti.Nodes.Clear(); if (_showFreeSlots) { for (int i = 0; i < Multis.MaximumMultiIndex; ++i) { MultiComponentList multi = Multis.GetComponents(i); TreeNode node; if (_xmlDocument == null) { node = new TreeNode($"{i,5} (0x{i:X})"); } else { XmlNodeList xMultiNodeList = _xmlElementMultis.SelectNodes("/Multis/Multi[@id='" + i + "']"); string j = ""; foreach (XmlNode xMultiNode in xMultiNodeList) { j = xMultiNode.Attributes["name"].Value; } node = new TreeNode(string.Format("{0,5} (0x{0:X}) {1}", i, j)); } node.Name = i.ToString(); node.Tag = multi; if (multi == MultiComponentList.Empty) { node.ForeColor = Color.Red; } TreeViewMulti.Nodes.Add(node); } } else { for (int i = 0; i < Multis.MaximumMultiIndex; ++i) { MultiComponentList multi = Multis.GetComponents(i); if (multi == MultiComponentList.Empty) { continue; } TreeNode node; if (_xmlDocument == null) { node = new TreeNode($"{i,5} (0x{i:X})"); } else { XmlNodeList xMultiNodeList = _xmlElementMultis.SelectNodes("/Multis/Multi[@id='" + i + "']"); string j = ""; foreach (XmlNode xMultiNode in xMultiNodeList) { j = xMultiNode.Attributes["name"].Value; } node = new TreeNode(string.Format("{0,5} (0x{0:X}) {1}", i, j)); } node.Tag = multi; node.Name = i.ToString(); TreeViewMulti.Nodes.Add(node); } } TreeViewMulti.EndUpdate(); }
private void OnMultiChangeEvent(object sender, int id) { if (!_loaded) { return; } if (sender.Equals(this)) { return; } MultiComponentList multi = Multis.GetComponents(id); if (multi == MultiComponentList.Empty) { return; } bool done = false; for (int i = 0; i < TreeViewMulti.Nodes.Count; ++i) { if (id == int.Parse(TreeViewMulti.Nodes[i].Name)) { TreeViewMulti.Nodes[i].Tag = multi; TreeViewMulti.Nodes[i].ForeColor = Color.Black; if (i == TreeViewMulti.SelectedNode.Index) { AfterSelect_Multi(this, null); } done = true; break; } if (id >= int.Parse(TreeViewMulti.Nodes[i].Name)) { continue; } TreeNode node = new TreeNode(string.Format("{0,5} (0x{0:X})", id)) { Tag = multi, Name = id.ToString() }; TreeViewMulti.Nodes.Insert(i, node); done = true; break; } if (!done) { TreeNode node = new TreeNode(string.Format("{0,5} (0x{0:X})", id)) { Tag = multi, Name = id.ToString() }; TreeViewMulti.Nodes.Add(node); } }