/// <summary> /// Saves the current sessions plugin settings to the world folder. /// </summary> public override void SaveData() { if (Sync.IsServer) { MyFileUtils.WriteXmlFileToWorld(Settings, FILE_NAME); } }
/// <summary> /// Saves the gpss to the file /// </summary> public override void SaveData() { if (!MySettingsSession.Static.IsEnabled()) { return; } MyPluginLog.Log("Saving GPS manager data"); MyObjectBuilder_WorldGpsData ob = new MyObjectBuilder_WorldGpsData(); foreach (var entry in m_globalGpss) { PersistentGpsData item = new PersistentGpsData(); item.Name = entry.Value.Name; item.Color = entry.Value.Color; item.Position = entry.Value.Position; item.PlayerIds = entry.Value.Players; item.Id = entry.Key; item.Hidden = entry.Value.Hidden; ob.PersistentGpss.Add(item); } MyFileUtils.WriteXmlFileToWorld(ob, FILENAME); MyPluginLog.Log("Saving GPS manager data completed"); }
/// <summary> /// Loads the savefile of the plugin settings of the world and stores it /// int the Settings member variable /// </summary> public override void LoadData() { MyPluginLog.Log("Loading Session settings data"); Static = this; if (MyFileUtils.FileExistsInWorldStorage(FILE_NAME)) { Settings = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_WorldSettings>(FILE_NAME); MyPluginLog.Log("Session settings read from file"); } else { MyPluginLog.Log("Session settings do not exist, creating new ones."); if (MySettings.Static == null) { var s = new MySettings(); s.LoadSettings(); } if (MySettings.Static.SessionSettings != null) { Settings = MySettings.Static.SessionSettings; } else { Settings = new MyObjectBuilder_WorldSettings(); } MySettings.Static.SessionSettings = null; } MyPluginLog.Log("Loading Session settings data completed"); }
/// <summary> /// Saves the system objects to a file, if the plugin is enabled. /// </summary> public override void SaveData() { if (MySettingsSession.Static.IsEnabled()) { MyPluginLog.Log("Saving system data"); MyFileUtils.WriteXmlFileToWorld(StarSystem, STORAGE_FILE); } }
/// <summary> /// Loads the global configuration file if it exists, otherwise creates a new one. /// </summary> public void LoadSettings() { MyPluginLog.Log("Loading the global config file"); if (MyFileUtils.FileExistsInGlobalStorage(FILENAME)) { try { using (var reader = MyFileUtils.ReadFileInGlobalStorage(FILENAME)) { MyPluginLog.Log("Reading global config file"); MyObjectBuilder_GlobalSettings saveFile = MyFileUtils.SerializeFromXml <MyObjectBuilder_GlobalSettings>(reader.ReadToEnd()); if (saveFile != null) { MyPluginLog.Log("Serialized global config file"); Settings = saveFile; } } } catch (Exception e) { MyPluginLog.Log("Couldnt load Plugin config file.", LogLevel.ERROR); MyPluginLog.Log(e.Message + "\n" + e.StackTrace, LogLevel.ERROR); MyFileUtils.DeleteFileInGlobalStorage(FILENAME); Settings = new MyObjectBuilder_GlobalSettings(); Settings.MoonDefinitions.Add("Moon"); Settings.MoonDefinitions.Add("Titan"); Settings.MoonDefinitions.Add("Europa"); Settings.MoonDefinitions.Add("Triton"); Settings.BlacklistedPlanetDefinitions.Add("EarthLikeTutorial"); Settings.BlacklistedPlanetDefinitions.Add("MarsTutorial"); Settings.BlacklistedPlanetDefinitions.Add("MoonTutorial"); Settings.BlacklistedPlanetDefinitions.Add("SystemTestMap"); Settings.BlacklistedPlanetDefinitions.Add("EarthLikeModExample"); } } else { MyPluginLog.Log("Config does not exist, creating default one"); Settings = new MyObjectBuilder_GlobalSettings(); Settings.MoonDefinitions.Add("Moon"); Settings.MoonDefinitions.Add("Titan"); Settings.MoonDefinitions.Add("Europa"); Settings.MoonDefinitions.Add("Triton"); Settings.BlacklistedPlanetDefinitions.Add("EarthLikeTutorial"); Settings.BlacklistedPlanetDefinitions.Add("MarsTutorial"); Settings.BlacklistedPlanetDefinitions.Add("MoonTutorial"); Settings.BlacklistedPlanetDefinitions.Add("SystemTestMap"); Settings.BlacklistedPlanetDefinitions.Add("EarthLikeModExample"); } Settings.Verify(); MyPluginLog.Log("Config loaded"); }
/// <summary> /// Loads the system data xml file from the world folder, or, /// if none exist, returns a new one. /// </summary> /// <returns></returns> private MyObjectBuilder_SystemData LoadSystemData() { if (MyFileUtils.FileExistsInWorldStorage(STORAGE_FILE)) { var data = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_SystemData>(STORAGE_FILE); if (data == null) { data = new MyObjectBuilder_SystemData(); } return(data); } return(new MyObjectBuilder_SystemData()); }
/// <summary> /// Unloads the used data of this session component. /// </summary> protected override void UnloadData() { MyPluginLog.Log("Unloading Session settings data"); if (Sync.IsServer) { MyFileUtils.WriteXmlFileToWorld(Settings, FILE_NAME); } Settings = null; MySettings.Static.SessionSettings = null; MyPluginLog.Log("Unloading Session settings data completed"); }
/// <summary> /// Loads values from the folder of the world, which is currently edited. Used for editing world settings. /// </summary> private void LoadValues() { var path = Path.Combine(MyFileSystem.SavesPath, Checkpoint.SessionName.Replace(":", "-")); if (MyFileUtils.FileExistsInPath(path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings))) { PlSettings = MyFileUtils.ReadXmlFileFromPath <MyObjectBuilder_WorldSettings>(path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings)); } else { PlSettings = new MyObjectBuilder_WorldSettings(); } m_enablePlugin.IsChecked = PlSettings.Enabled; }
/// <summary> /// Saves the global configuration file /// </summary> public void SaveSettings() { MyFileUtils.DeleteFileInGlobalStorage(FILENAME); string xml = MyFileUtils.SerializeToXml(Settings); MyPluginLog.Log("Saving global SEWorldGenPlugin config file: " + xml); using (var writer = MyFileUtils.WriteFileInGlobalStorage(FILENAME)) { writer.Write(xml); writer.Close(); } }
/// <summary> /// Loads persistent gps data /// </summary> public override void LoadData() { MyPluginLog.Log("Loading GPS manager data"); Static = this; MyObjectBuilder_WorldGpsData ob; if (MyFileUtils.FileExistsInWorldStorage(FILENAME)) { ob = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_WorldGpsData>(FILENAME); } else { ob = new MyObjectBuilder_WorldGpsData(); } m_globalGpss = new Dictionary <Guid, MyGpsData>(); m_dynamicGpss = new Dictionary <Tuple <Guid, long>, int>(); foreach (var item in ob.PersistentGpss) { var data = new MyGpsData(item.Name, item.Color, item.Position, item.Id, item.PlayerIds, item.Hidden); m_globalGpss[item.Id] = data; } MySession.Static.OnSavingCheckpoint += delegate { foreach (var key in m_dynamicGpss.Keys) { MySession.Static.Gpss.SendDelete(key.Item2, m_dynamicGpss[key]); } ; m_dynamicGpss.Clear(); }; MyPluginLog.Log("Loading GPS manager data completed"); }
/// <summary> /// Builds the controls for the gui screen by first building the base /// controls and then adding the checkbox to enable the plugin and a button to edit /// its settings for the world, also initializes an instance of plugin settings to edit. /// Adds a new delegate to the create world button, to transfere the set plugin settings /// to the plugins settings session component. /// </summary> protected override void BuildControls() { base.BuildControls(); Vector2 vector = -m_size.Value / 2f + new Vector2(m_isNewGame ? (MARGIN_LEFT_LIST + MyGuiConstants.LISTBOX_WIDTH + MARGIN_LEFT_INFO) : MARGIN_LEFT_LIST, m_isNewGame ? (MARGIN_TOP + 0.015f) : (MARGIN_TOP - 0.105f)); Vector2 value = new Vector2(0f, 0.052f); Vector2 vector2 = m_size.Value / 2f - vector; vector2.X -= MARGIN_RIGHT + 0.005f; vector2.Y -= MARGIN_BOTTOM; Vector2 vector3 = vector2 * (m_isNewGame ? 0.339f : 0.329f); Vector2 vector4 = vector2 - vector3; m_enablePluginLabel = new MyGuiControlLabel(null, null, "Enable SEWorldGenPlugin"); m_enablePlugin = new MyGuiControlCheckbox(); m_enablePlugin.SetToolTip("Enable the SEWorldGenPlugin for this world"); m_enablePlugin.IsCheckedChanged = (Action <MyGuiControlCheckbox>) Delegate.Combine(m_enablePlugin.IsCheckedChanged, (Action <MyGuiControlCheckbox>) delegate(MyGuiControlCheckbox s) { if (PlSettings != null) { PlSettings.Enabled = s.IsChecked; m_pluginSettingsButton.Enabled = m_enablePlugin.IsChecked; } }); m_enablePlugin.IsChecked = false; m_pluginSettingsButton = new MyGuiControlButton(null, MyGuiControlButtonStyleEnum.Small, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, null, new StringBuilder("Plugin settings"), 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiControlHighlightType.WHEN_ACTIVE, OnSettingsClick); Controls.Add(m_enablePluginLabel); Controls.Add(m_enablePlugin); Controls.Add(m_pluginSettingsButton); m_enablePluginLabel.Position = vector + value * 5; m_enablePluginLabel.PositionY += MyGuiConstants.BACK_BUTTON_SIZE.Y * 2; m_pluginSettingsButton.Enabled = m_enablePlugin.IsChecked; m_enablePlugin.Position = GetControlPosition(); m_enablePlugin.PositionY = m_enablePluginLabel.PositionY; m_enablePlugin.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER; m_pluginSettingsButton.Position = m_enablePlugin.Position; m_pluginSettingsButton.PositionX += m_enablePlugin.Size.X + 0.009f; m_pluginSettingsButton.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER; foreach (var c in Controls) { if (c is MyGuiControlButton) { MyGuiControlButton b = (MyGuiControlButton)c; if (b.Text == MyTexts.GetString(MyCommonTexts.Start) || b.Text == MyTexts.GetString(MyCommonTexts.Ok)) { if (!m_enablePlugin.IsChecked) { PlSettings = new MyObjectBuilder_WorldSettings(); PlSettings.Enabled = m_enablePlugin.IsChecked; } if (m_isNewGame) { b.ButtonClicked += delegate { MySettings.Static.SessionSettings = PlSettings; MyPluginLog.Log("Settings: " + PlSettings.ToString()); }; } else { b.ButtonClicked += delegate { var name = Checkpoint.SessionName; var path = Path.Combine(MyFileSystem.SavesPath, name.Replace(":", "-")); MyFileUtils.WriteXmlFileToPath(PlSettings, path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings)); }; } } } } if (m_isNewGame) { PlSettings = new MyObjectBuilder_WorldSettings(); } else { LoadValues(); } }