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
This commit is contained in:
Xpl0itR 2020-02-14 19:19:13 +00:00 committed by GitHub
parent dbe3f938c7
commit a73fd9e9bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 6 deletions

View file

@ -14,6 +14,8 @@ namespace Ryujinx
{ {
public static string Version { get; private set; } public static string Version { get; private set; }
public static string ConfigurationPath { get; set; }
static void Main(string[] args) static void Main(string[] args)
{ {
Toolkit.Init(new ToolkitOptions Toolkit.Init(new ToolkitOptions
@ -40,19 +42,33 @@ namespace Ryujinx
// Initialize Discord integration // Initialize Discord integration
DiscordIntegrationModule.Initialize(); 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 // 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); ConfigurationState.Instance.Load(configurationFileFormat);
} }
else else
{ {
// No configuration, we load the default values and save it on disk // No configuration, we load the default values and save it on disk
ConfigurationPath = globalConfigurationPath;
ConfigurationState.Instance.LoadDefault(); ConfigurationState.Instance.LoadDefault();
ConfigurationState.Instance.ToFileFormat().SaveConfig(configurationPath); ConfigurationState.Instance.ToFileFormat().SaveConfig(globalConfigurationPath);
} }
Profile.Initialize(); Profile.Initialize();

View file

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

View file

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