private void SaveGumps(string path) { string gumpsXmlPath = Path.Combine(path, "gumps.xml"); using (XmlTextWriter xml = new XmlTextWriter(gumpsXmlPath, Encoding.UTF8) { Formatting = Formatting.Indented, IndentChar = '\t', Indentation = 1 }) { xml.WriteStartDocument(true); xml.WriteStartElement("gumps"); UIManager.AnchorManager.Save(xml); LinkedList <Gump> gumps = new LinkedList <Gump>(); foreach (Gump gump in UIManager.Gumps) { if (!gump.IsDisposed && gump.CanBeSaved && !(gump is AnchorableGump anchored && UIManager.AnchorManager[anchored] != null)) { gumps.AddLast(gump); } } LinkedListNode <Gump> first = gumps.First; while (first != null) { Gump gump = first.Value; if (gump.LocalSerial != 0) { Item item = World.Items.Get(gump.LocalSerial); if (item != null && !item.IsDestroyed && item.Opened) { while (SerialHelper.IsItem(item.Container)) { item = World.Items.Get(item.Container); } SaveItemsGumpRecursive(item, xml, gumps); if (first.List != null) { gumps.Remove(first); } first = gumps.First; continue; } } xml.WriteStartElement("gump"); gump.Save(xml); xml.WriteEndElement(); if (first.List != null) { gumps.Remove(first); } first = gumps.First; } xml.WriteEndElement(); xml.WriteEndDocument(); } SkillsGroupManager.Save(); }