diff options
Diffstat (limited to 'Ryujinx/Config.cs')
-rw-r--r-- | Ryujinx/Config.cs | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/Ryujinx/Config.cs b/Ryujinx/Config.cs index e211441f..b5361421 100644 --- a/Ryujinx/Config.cs +++ b/Ryujinx/Config.cs @@ -20,7 +20,9 @@ namespace Ryujinx public static void Read() { - IniParser Parser = new IniParser(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Ryujinx.conf")); + var iniFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); + var iniPath = Path.Combine(iniFolder, "Ryujinx.conf"); + IniParser Parser = new IniParser(iniPath); LoggingEnableInfo = Convert.ToBoolean(Parser.Value("Logging_Enable_Info")); LoggingEnableTrace = Convert.ToBoolean(Parser.Value("Logging_Enable_Trace")); @@ -70,23 +72,24 @@ namespace Ryujinx // https://stackoverflow.com/a/37772571 public class IniParser { - private Dictionary<string, string> Values; + private readonly Dictionary<string, string> Values; public IniParser(string Path) { Values = File.ReadLines(Path) - .Where(Line => (!String.IsNullOrWhiteSpace(Line) && !Line.StartsWith("#"))) - .Select(Line => Line.Split(new char[] { '=' }, 2, 0)) + .Where(Line => !string.IsNullOrWhiteSpace(Line) && !Line.StartsWith('#')) + .Select(Line => Line.Split('=', 2)) .ToDictionary(Parts => Parts[0].Trim(), Parts => Parts.Length > 1 ? Parts[1].Trim() : null); } - public string Value(string Name, string Value = null) + /// <summary> + /// Gets the setting value for the requested setting <see cref="Name"/>. + /// </summary> + /// <param name="Name">Setting Name</param> + /// <param name="defaultValue">Default value of the setting</param> + public string Value(string Name, string defaultValue = null) { - if (Values != null && Values.ContainsKey(Name)) - { - return Values[Name]; - } - return Value; + return Values.TryGetValue(Name, out var value) ? value : defaultValue; } } } |