diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 6a5b40b670..f0961081bd 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -612,7 +612,9 @@ namespace OpenRA if (FileSystem.Exists(settingsFile)) FieldLoader.Load(Settings, new IniFile(FileSystem.Open(settingsFile)).GetSection("Settings")); - FileSystem.UnmountAll(); + FileSystem.UnmountAll(); + + Settings.AddSettings(settings); } static bool quit; diff --git a/OpenRA.Game/GameRules/UserSettings.cs b/OpenRA.Game/GameRules/UserSettings.cs index 43dc65893b..d1a0fbef22 100644 --- a/OpenRA.Game/GameRules/UserSettings.cs +++ b/OpenRA.Game/GameRules/UserSettings.cs @@ -52,5 +52,12 @@ namespace OpenRA.GameRules public readonly int ExternalPort = 1234; public readonly bool InternetServer = true; public readonly string MasterServer = "http://open-ra.org/master/"; + + public void AddSettings(Settings settings) + { + foreach (var f in this.GetType().GetFields()) + if (settings.Contains(f.Name)) + OpenRA.FileFormats.FieldLoader.LoadField( this, f.Name, settings.GetValue(f.Name, "") ); + } } }