diff --git a/Program.cs b/Program.cs index 79a4f7071..5569cd49d 100644 --- a/Program.cs +++ b/Program.cs @@ -9,6 +9,8 @@ namespace Ryujinx { static void Main(string[] args) { + Config.Read(); + Console.Title = "Ryujinx Console"; IGalRenderer Renderer = new OpenGLRenderer(); diff --git a/Ryujinx.conf b/Ryujinx.conf new file mode 100644 index 000000000..590318fe7 --- /dev/null +++ b/Ryujinx.conf @@ -0,0 +1,20 @@ +#Enabled print informations logs +Logging_Enable_Info = true + +#Enabled print trace logs +Logging_Enable_Trace = true + +#Enabled print debug logs +Logging_Enable_Debug = true + +#Enabled print warning logs +Logging_Enable_Warn = true + +#Enabled print error logs +Logging_Enable_Error = true + +#Enabled print fatal logs +Logging_Enable_Fatal = true + +#Saved logs into Ryujinx.log +Logging_Enable_LogFile = false diff --git a/Ryujinx/Config.cs b/Ryujinx/Config.cs new file mode 100644 index 000000000..2e4e56953 --- /dev/null +++ b/Ryujinx/Config.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace Ryujinx +{ + public static class Config + { + public static bool LoggingEnableInfo { get; private set; } + public static bool LoggingEnableTrace { get; private set; } + public static bool LoggingEnableDebug { get; private set; } + public static bool LoggingEnableWarn { get; private set; } + public static bool LoggingEnableError { get; private set; } + public static bool LoggingEnableFatal { get; private set; } + public static bool LoggingEnableLogFile { get; private set; } + + public static void Read() + { + IniParser Parser = new IniParser("Ryujinx.conf"); + + LoggingEnableInfo = Convert.ToBoolean(Parser.Value("Logging_Enable_Info")); + LoggingEnableTrace = Convert.ToBoolean(Parser.Value("Logging_Enable_Trace")); + LoggingEnableDebug = Convert.ToBoolean(Parser.Value("Logging_Enable_Debug")); + LoggingEnableWarn = Convert.ToBoolean(Parser.Value("Logging_Enable_Warn")); + LoggingEnableError = Convert.ToBoolean(Parser.Value("Logging_Enable_Error")); + LoggingEnableFatal = Convert.ToBoolean(Parser.Value("Logging_Enable_Fatal")); + LoggingEnableLogFile = Convert.ToBoolean(Parser.Value("Logging_Enable_LogFile")); + } + } + + // https://stackoverflow.com/a/37772571 + public class IniParser + { + private Dictionary Values; + + public IniParser(string Path) + { + Values = File.ReadLines(Path) + .Where(Line => (!String.IsNullOrWhiteSpace(Line) && !Line.StartsWith("#"))) + .Select(Line => Line.Split(new char[] { '=' }, 2, 0)) + .ToDictionary(Parts => Parts[0].Trim(), Parts => Parts.Length > 1 ? Parts[1].Trim() : null); + } + + public string Value(string Name, string Value = null) + { + if (Values != null && Values.ContainsKey(Name)) + { + return Values[Name]; + } + return Value; + } + } +} diff --git a/Ryujinx/Logging.cs b/Ryujinx/Logging.cs index bdb6ad06a..f575549eb 100644 --- a/Ryujinx/Logging.cs +++ b/Ryujinx/Logging.cs @@ -10,13 +10,13 @@ namespace Ryujinx private static Stopwatch ExecutionTime = new Stopwatch(); private static string LogFileName = "Ryujinx.log"; - public static bool EnableInfo = true; - public static bool EnableTrace = true; - public static bool EnableDebug = true; - public static bool EnableWarn = true; - public static bool EnableError = true; - public static bool EnableFatal = true; - public static bool EnableLogFile = false; + public static bool EnableInfo = Config.LoggingEnableInfo; + public static bool EnableTrace = Config.LoggingEnableTrace; + public static bool EnableDebug = Config.LoggingEnableDebug; + public static bool EnableWarn = Config.LoggingEnableWarn; + public static bool EnableError = Config.LoggingEnableError; + public static bool EnableFatal = Config.LoggingEnableFatal; + public static bool EnableLogFile = Config.LoggingEnableLogFile; static Logging() {