فهرست منبع

Changes to configuration (#811)

* config loading changes

- load config from either ryufs or ryujinx.exe parent folder with parent folder taking priority
- config file in repo is only copied to parent directory if built in debug mode

* AcK's requested changes

* add "Profile Debug" as a condition to copy the default config to output
Xpl0itR 6 سال پیش
والد
کامیت
a73fd9e9bd
3فایلهای تغییر یافته به همراه22 افزوده شده و 6 حذف شده
  1. 20 4
      Ryujinx/Program.cs
  2. 1 1
      Ryujinx/Ryujinx.csproj
  3. 1 1
      Ryujinx/Ui/MainWindow.cs

+ 20 - 4
Ryujinx/Program.cs

@@ -14,6 +14,8 @@ namespace Ryujinx
     {
         public static string Version { get; private set; }
 
+        public static string ConfigurationPath { get; set; }
+		
         static void Main(string[] args)
         {
             Toolkit.Init(new ToolkitOptions
@@ -40,19 +42,33 @@ namespace Ryujinx
             // Initialize Discord integration
             DiscordIntegrationModule.Initialize();
 
-            string configurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
+            string localConfigurationPath  = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
+            string globalConfigurationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx", "Config.json");
 
             // Now load the configuration as the other subsystems are now registered
-            if (File.Exists(configurationPath))
+            if (File.Exists(localConfigurationPath))
             {
-                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(configurationPath);
+                ConfigurationPath = localConfigurationPath;
+
+                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(localConfigurationPath);
+
+                ConfigurationState.Instance.Load(configurationFileFormat);
+            }
+            else if (File.Exists(globalConfigurationPath))
+            {
+                ConfigurationPath = globalConfigurationPath;
+
+                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(globalConfigurationPath);
+
                 ConfigurationState.Instance.Load(configurationFileFormat);
             }
             else
             {
                 // No configuration, we load the default values and save it on disk
+                ConfigurationPath = globalConfigurationPath;
+
                 ConfigurationState.Instance.LoadDefault();
-                ConfigurationState.Instance.ToFileFormat().SaveConfig(configurationPath);
+                ConfigurationState.Instance.ToFileFormat().SaveConfig(globalConfigurationPath);
             }
 
             Profile.Initialize();

+ 1 - 1
Ryujinx/Ryujinx.csproj

@@ -90,7 +90,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <None Update="Config.json">
+    <None Update="Config.json" Condition="'$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Profile Debug'">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Update="RPsupported.dat">

+ 1 - 1
Ryujinx/Ui/MainWindow.cs

@@ -1116,7 +1116,7 @@ namespace Ryujinx.Ui
 
         public static void SaveConfig()
         {
-            ConfigurationState.Instance.ToFileFormat().SaveConfig(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json"));
+            ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
         }
     }
 }