OpenRA.Settings.Settings C# (CSharp) Method

Settings() public method

public Settings ( string file, Arguments args ) : System
file string
args Arguments
return System
        public Settings(string file, Arguments args)
        {
            settingsFile = file;
            Sections = new Dictionary<string, object>()
            {
                { "Player", Player },
                { "Game", Game },
                { "Sound", Sound },
                { "Graphics", Graphics },
                { "Server", Server },
                { "Debug", Debug },
                { "Keys", Keys },
                { "Chat", Chat }
            };

            // Override fieldloader to ignore invalid entries
            var err1 = FieldLoader.UnknownFieldAction;
            var err2 = FieldLoader.InvalidValueAction;
            try
            {
                FieldLoader.UnknownFieldAction = (s, f) => Console.WriteLine("Ignoring unknown field `{0}` on `{1}`".F(s, f.Name));

                if (File.Exists(settingsFile))
                {
                    var yaml = MiniYaml.DictFromFile(settingsFile);

                    foreach (var kv in Sections)
                        if (yaml.ContainsKey(kv.Key))
                            LoadSectionYaml(yaml[kv.Key], kv.Value);
                }

                // Override with commandline args
                foreach (var kv in Sections)
                    foreach (var f in kv.Value.GetType().GetFields())
                        if (args.Contains(kv.Key + "." + f.Name))
                            FieldLoader.LoadField(kv.Value, f.Name, args.GetValue(kv.Key + "." + f.Name, ""));
            }
            finally
            {
                FieldLoader.UnknownFieldAction = err1;
                FieldLoader.InvalidValueAction = err2;
            }
        }