/// <summary> /// Replace the given settings with a new Settings object of the given setting preset, and save it /// </summary> public static void ReloadSettings(Settings previousSettings, string presetCfgUrl) { _instance = Settings.LoadPreset(previousSettings, presetCfgUrl); _instance.Save(); }
public static Settings Load() { // Create a new settings object Settings settings = new Settings(); // Disable RemoteTech on Training missions if (RTUtil.IsGameScenario) { settings.RemoteTechEnabled = false; } // skip loading if we are on the loading screen // and return the default object and also for // scenario games. if (string.IsNullOrEmpty(Settings.File)) { return(settings); } settings.settingsLoaded = true; // try to load from the base settings.cfg ConfigNode load = ConfigNode.Load(Settings.File); if (load == null) { // write new base file to the rt folder settings.Save(); settings.firstStart = true; } else { // old or new format? if (load.HasNode("RemoteTechSettings")) { load = load.GetNode("RemoteTechSettings"); } RTLog.Notify("Load base settings into object with {0}", load); // load basic file ConfigNode.LoadObjectFromConfig(settings, load); } bool presetsLoaded = false; // Prefer to load from GameDatabase, to allow easier user customization UrlDir.UrlConfig[] configList = GameDatabase.Instance.GetConfigs("RemoteTechSettings"); // find the default_settings from remote tech to load as the first settings UrlDir.UrlConfig defConfig = Array.Find(configList, cl => cl.url.Equals("RemoteTech/Default_Settings/RemoteTechSettings") && !settings.PreSets.Contains(cl.url)); if (defConfig != null) { RTLog.Notify("Load default remotetech settings", RTLogLevel.LVL1); settings = Settings.LoadPreset(settings, defConfig); } foreach (UrlDir.UrlConfig curSet in configList) { // only third party files if (!curSet.url.Equals("RemoteTech/RemoteTech_Settings/RemoteTechSettings") && !settings.PreSets.Contains(curSet.url)) { settings = Settings.LoadPreset(settings, curSet); // trigger to save the settings again presetsLoaded = true; } } if (presetsLoaded) { settings.Save(); } RTSettings.OnSettingsLoaded.Fire(); return(settings); }