public void Save() { string profileDir = Config.GetUserDirectory("Profiles"); string file = Path.Combine(profileDir, $"{m_Name}.xml"); if (m_Name != "default" && !m_Warned) { try { m_Mutex = new System.Threading.Mutex(true, $"Razor_Profile_{m_Name}"); if (!m_Mutex.WaitOne(10, false)) { throw new Exception("Can't grab profile mutex, must be in use!"); } } catch { //MessageBox.Show( Engine.ActiveWindow, Language.Format( LocString.ProfileInUse, m_Name ), "Profile In Use", MessageBoxButtons.OK, MessageBoxIcon.Warning ); //m_Warned = true; return; // refuse to overwrite profiles that we don't own. } } XmlTextWriter xml; try { xml = new XmlTextWriter(file, Encoding.UTF8); } catch { return; } xml.Formatting = Formatting.Indented; xml.IndentChar = '\t'; xml.Indentation = 1; xml.WriteStartDocument(true); xml.WriteStartElement("profile"); foreach (KeyValuePair <string, object> de in m_Props) { xml.WriteStartElement("property"); xml.WriteAttributeString("name", de.Key); if (de.Value == null) { xml.WriteAttributeString("type", "-null-"); } else { xml.WriteAttributeString("type", de.Value.GetType().FullName); xml.WriteString(de.Value.ToString()); } xml.WriteEndElement(); } xml.WriteStartElement("filters"); Filter.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("counters"); Counter.SaveProfile(xml); xml.WriteEndElement(); xml.WriteStartElement("agents"); Agent.SaveProfile(xml); xml.WriteEndElement(); xml.WriteStartElement("dresslists"); DressList.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("hotkeys"); HotKey.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("passwords"); PasswordMemory.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("overheadmessages"); OverheadManager.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("containerlabels"); ContainerLabels.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("macrovariables"); MacroVariables.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("scriptvariables"); ScriptVariables.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("friends"); FriendsManager.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("textfilters"); TextFilterManager.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("targetfilters"); TargetFilterManager.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("soundfilters"); SoundMusicManager.Save(xml); xml.WriteEndElement(); xml.WriteStartElement("waypoints"); WaypointManager.Save(xml); xml.WriteEndElement(); xml.WriteEndElement(); // end profile section xml.Close(); }