Config.cs 4.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. namespace Ryujinx
  7. {
  8. public static class Config
  9. {
  10. public static bool LoggingEnableInfo { get; private set; }
  11. public static bool LoggingEnableTrace { get; private set; }
  12. public static bool LoggingEnableDebug { get; private set; }
  13. public static bool LoggingEnableWarn { get; private set; }
  14. public static bool LoggingEnableError { get; private set; }
  15. public static bool LoggingEnableFatal { get; private set; }
  16. public static bool LoggingEnableLogFile { get; private set; }
  17. public static JoyCon FakeJoyCon { get; private set; }
  18. public static void Read()
  19. {
  20. IniParser Parser = new IniParser(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Ryujinx.conf"));
  21. LoggingEnableInfo = Convert.ToBoolean(Parser.Value("Logging_Enable_Info"));
  22. LoggingEnableTrace = Convert.ToBoolean(Parser.Value("Logging_Enable_Trace"));
  23. LoggingEnableDebug = Convert.ToBoolean(Parser.Value("Logging_Enable_Debug"));
  24. LoggingEnableWarn = Convert.ToBoolean(Parser.Value("Logging_Enable_Warn"));
  25. LoggingEnableError = Convert.ToBoolean(Parser.Value("Logging_Enable_Error"));
  26. LoggingEnableFatal = Convert.ToBoolean(Parser.Value("Logging_Enable_Fatal"));
  27. LoggingEnableLogFile = Convert.ToBoolean(Parser.Value("Logging_Enable_LogFile"));
  28. FakeJoyCon = new JoyCon
  29. {
  30. Left = new JoyConLeft
  31. {
  32. StickUp = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Stick_Up")),
  33. StickDown = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Stick_Down")),
  34. StickLeft = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Stick_Left")),
  35. StickRight = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Stick_Right")),
  36. StickButton = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Stick_Button")),
  37. DPadUp = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_DPad_Up")),
  38. DPadDown = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_DPad_Down")),
  39. DPadLeft = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_DPad_Left")),
  40. DPadRight = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_DPad_Right")),
  41. ButtonMinus = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Button_Minus")),
  42. ButtonL = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Button_L")),
  43. ButtonZL = Convert.ToInt16(Parser.Value("Controls_Left_FakeJoycon_Button_ZL"))
  44. },
  45. Right = new JoyConRight
  46. {
  47. StickUp = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Stick_Up")),
  48. StickDown = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Stick_Down")),
  49. StickLeft = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Stick_Left")),
  50. StickRight = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Stick_Right")),
  51. StickButton = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Stick_Button")),
  52. ButtonA = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_A")),
  53. ButtonB = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_B")),
  54. ButtonX = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_X")),
  55. ButtonY = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_Y")),
  56. ButtonPlus = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_Plus")),
  57. ButtonR = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_R")),
  58. ButtonZR = Convert.ToInt16(Parser.Value("Controls_Right_FakeJoycon_Button_ZR"))
  59. }
  60. };
  61. }
  62. }
  63. // https://stackoverflow.com/a/37772571
  64. public class IniParser
  65. {
  66. private Dictionary<string, string> Values;
  67. public IniParser(string Path)
  68. {
  69. Values = File.ReadLines(Path)
  70. .Where(Line => (!String.IsNullOrWhiteSpace(Line) && !Line.StartsWith("#")))
  71. .Select(Line => Line.Split(new char[] { '=' }, 2, 0))
  72. .ToDictionary(Parts => Parts[0].Trim(), Parts => Parts.Length > 1 ? Parts[1].Trim() : null);
  73. }
  74. public string Value(string Name, string Value = null)
  75. {
  76. if (Values != null && Values.ContainsKey(Name))
  77. {
  78. return Values[Name];
  79. }
  80. return Value;
  81. }
  82. }
  83. }