public void LoadSettings() { if (FileUtils.FileExistsInGlobalStorage(FILENAME)) { try { using (var reader = FileUtils.ReadFileInGlobalStorage(FILENAME)) { MyObjectBuilder_PluginSettings saveFile = FileUtils.SerializeFromXml <MyObjectBuilder_PluginSettings>(reader.ReadToEnd()); if (saveFile != null) { Settings = saveFile; } } } catch (Exception e) { MyLog.Default.Error("Couldnt load Plugin config file."); MyLog.Default.Error(e.Message + "\n" + e.StackTrace); FileUtils.DeleteFileInGlobalStorage(FILENAME); Settings = new MyObjectBuilder_PluginSettings(); } } else { Settings = new MyObjectBuilder_PluginSettings(); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Moon"); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Titan"); } Settings.Verify(); }
/// <summary> /// Loads the savefile of the plugin settings of the world and stores it /// int the Settings member variable /// </summary> public override void LoadData() { Static = this; if (FileUtils.FileExistsInWorldStorage(FILE_NAME, typeof(SettingsSession))) { Settings = FileUtils.ReadXmlFileFromWorld <MyObjectBuilder_PluginSettings>(FILE_NAME, typeof(SettingsSession)); } else { if (MySettings.Static == null) { var s = new MySettings(); s.LoadSettings(); } if (MySettings.Static.SessionSettings != null) { Settings = MySettings.Static.SessionSettings; } else { Settings = MySettings.Static.Settings; } MySettings.Static.SessionSettings = null; } }
/// <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 (FileUtils.FileExistsInPath(path, SettingsSession.FILE_NAME, typeof(PluginWorldSettings))) { PlSettings = FileUtils.ReadXmlFileFromPath <MyObjectBuilder_PluginSettings>(path, SettingsSession.FILE_NAME, typeof(PluginWorldSettings)); } else { PlSettings = new MyObjectBuilder_PluginSettings(); } m_enablePlugin.IsChecked = PlSettings.Enable; }
public void SetSettings(MyObjectBuilder_PluginSettings settings, bool useGlobal) { m_useGlobalCheck.IsChecked = useGlobal; if (useGlobal || settings == null) { return; } m_useSemiRandomGenerationCheck.IsChecked = settings.GeneratorSettings.SemiRandomizedGeneration; m_useVanillaPlanetsCheck.IsChecked = settings.GeneratorSettings.UseVanillaPlanets; m_planetsOnlyOnceCheck.IsChecked = settings.GeneratorSettings.PlanetsOnlyOnce; m_moonsOnlyOnceCheck.IsChecked = settings.GeneratorSettings.MoonsOnlyOnce; m_planetGpsCheck.IsChecked = settings.GeneratorSettings.PlanetSettings.ShowPlanetGPS; m_moonGpsCheck.IsChecked = settings.GeneratorSettings.PlanetSettings.ShowMoonGPS; m_beltGpsCheck.IsChecked = settings.GeneratorSettings.BeltSettings.ShowBeltGPS; m_ringGpsCheck.IsChecked = settings.GeneratorSettings.PlanetSettings.RingSettings.ShowRingGPS; m_asteroidGeneratorCombo.SelectItemByKey((int)settings.GeneratorSettings.AsteroidGenerator); m_asteroidDensitySlider.Value = settings.GeneratorSettings.AsteroidDensity; m_objAmountSlider.Value = (settings.GeneratorSettings.MinObjectsInSystem + settings.GeneratorSettings.MaxObjectsInSystem) / 2; m_orbDistanceSlider.Value = (settings.GeneratorSettings.MinOrbitDistance / 1000 + settings.GeneratorSettings.MaxOrbitDistance / 1000) / 2; m_sizeMultiplierSlider.Value = settings.GeneratorSettings.PlanetSettings.SizeMultiplier; m_sizeCapSlider.Value = (float)settings.GeneratorSettings.PlanetSettings.PlanetSizeCap / 1000; m_moonProbSlider.Value = settings.GeneratorSettings.PlanetSettings.MoonProbability; m_ringWidthSlider.Value = (settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth + settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth) / 2; m_ringProbSlider.Value = settings.GeneratorSettings.PlanetSettings.RingSettings.PlanetRingProbability; m_beltHeightSlider.Value = (settings.GeneratorSettings.BeltSettings.MinBeltHeight + settings.GeneratorSettings.BeltSettings.MaxBeltHeight) / 2; m_worldSizeSlider.Value = settings.GeneratorSettings.WorldSize / 1000; }
/// <summary> /// Gets the current set settings from the gui elements and sets them in /// settings /// </summary> /// <param name="settings">The plugin settings to set</param> /// <returns>If global config should be used</returns> public bool GetSettings(ref MyObjectBuilder_PluginSettings settings) { if (settings == null) { settings = new MyObjectBuilder_PluginSettings(); } settings.GeneratorSettings.SemiRandomizedGeneration = m_useSemiRandomGenerationCheck.IsChecked; settings.GeneratorSettings.UseVanillaPlanets = m_useVanillaPlanetsCheck.IsChecked; settings.GeneratorSettings.PlanetsOnlyOnce = m_planetsOnlyOnceCheck.IsChecked; settings.GeneratorSettings.MoonsOnlyOnce = m_moonsOnlyOnceCheck.IsChecked; settings.GeneratorSettings.MinObjectsInSystem = (int)m_objAmountSlider.Value; settings.GeneratorSettings.MaxObjectsInSystem = (int)m_objAmountSlider.Value; settings.GeneratorSettings.MinOrbitDistance = (int)m_orbDistanceSlider.Value * 1000 / 10; settings.GeneratorSettings.MaxOrbitDistance = (int)(m_orbDistanceSlider.Value * 1000 * 2 - settings.GeneratorSettings.MinOrbitDistance); settings.GeneratorSettings.AsteroidGenerator = (AsteroidGenerator)m_asteroidGeneratorCombo.GetSelectedKey(); settings.GeneratorSettings.AsteroidDensity = m_asteroidDensitySlider.Value; settings.GeneratorSettings.PlanetSettings.SizeMultiplier = (int)m_sizeMultiplierSlider.Value; settings.GeneratorSettings.PlanetSettings.PlanetSizeCap = (int)m_sizeCapSlider.Value * 1000; settings.GeneratorSettings.PlanetSettings.MoonProbability = m_moonProbSlider.Value; settings.GeneratorSettings.PlanetSettings.ShowPlanetGPS = m_planetGpsCheck.IsChecked; settings.GeneratorSettings.PlanetSettings.ShowMoonGPS = m_moonGpsCheck.IsChecked; settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth = (int)m_ringWidthSlider.Value / 10; settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth = (int)m_ringWidthSlider.Value * 2 - settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth; settings.GeneratorSettings.PlanetSettings.RingSettings.PlanetRingProbability = m_ringProbSlider.Value; settings.GeneratorSettings.PlanetSettings.RingSettings.ShowRingGPS = m_ringGpsCheck.IsChecked; settings.GeneratorSettings.BeltSettings.MinBeltHeight = (int)m_beltHeightSlider.Value / 10; settings.GeneratorSettings.BeltSettings.MaxBeltHeight = (int)m_beltHeightSlider.Value * 2 - settings.GeneratorSettings.BeltSettings.MinBeltHeight; settings.GeneratorSettings.BeltSettings.BeltProbability = m_beltProbSlider.Value; settings.GeneratorSettings.BeltSettings.ShowBeltGPS = m_beltGpsCheck.IsChecked; settings.GeneratorSettings.WorldSize = (long)m_worldSizeSlider.Value * 1000; return(m_useGlobalCheck.IsChecked); }
/// <summary> /// Loads the global configuration file if it exists, otherwise creates a new one. /// </summary> public void LoadSettings() { PluginLog.Log("Loading the global config file"); if (FileUtils.FileExistsInGlobalStorage(FILENAME)) { try { using (var reader = FileUtils.ReadFileInGlobalStorage(FILENAME)) { MyObjectBuilder_PluginSettings saveFile = FileUtils.SerializeFromXml <MyObjectBuilder_PluginSettings>(reader.ReadToEnd()); if (saveFile != null) { Settings = saveFile; } } } catch (Exception e) { PluginLog.Log("Couldnt load Plugin config file.", LogLevel.ERROR); PluginLog.Log(e.Message + "\n" + e.StackTrace, LogLevel.ERROR); FileUtils.DeleteFileInGlobalStorage(FILENAME); Settings = new MyObjectBuilder_PluginSettings(); } } else { PluginLog.Log("Config does not exist, creating default one"); Settings = new MyObjectBuilder_PluginSettings(); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Moon"); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Titan"); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Europa"); Settings.GeneratorSettings.PlanetSettings.Moons.Add("Triton"); } Settings.Verify(); PluginLog.Log("Config loaded"); }
/// <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.Enable = s.IsChecked; } }); m_enablePlugin.IsChecked = MySettings.Static.Settings.Enable; 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_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_isNewGame) { b.ButtonClicked += delegate { if (!UseGlobal) { MySettings.Static.SessionSettings = PlSettings; PluginLog.Log("Settings: " + PlSettings.ToString()); } else { MySettings.Static.SessionSettings = new MyObjectBuilder_PluginSettings(); MySettings.Static.SessionSettings.Enable = m_enablePlugin.IsChecked; } }; } else { b.ButtonClicked += delegate { var name = Checkpoint.SessionName; var path = Path.Combine(MyFileSystem.SavesPath, name.Replace(":", "-")); FileUtils.WriteXmlFileToPath(PlSettings, path, SettingsSession.FILE_NAME, typeof(PluginWorldSettings)); }; } } } } if (m_isNewGame) { PlSettings = MySettings.Static.Settings.copy(); } else { LoadValues(); } }
public MySettings() { Static = this; Settings = new MyObjectBuilder_PluginSettings(); }
/// <summary> /// Unloads the used data of this session component. /// </summary> protected override void UnloadData() { FileUtils.WriteXmlFileToWorld(Settings, FILE_NAME, typeof(SettingsSession)); Settings = null; }