mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-09-22 02:31:12 +02:00
98 lines
4.9 KiB
C#
98 lines
4.9 KiB
C#
using Ryujinx.Common.Configuration;
|
|
using Ryujinx.Common.Logging;
|
|
using Ryujinx.Common.Utilities;
|
|
using Ryujinx.HLE;
|
|
using Ryujinx.UI.Common.Configuration;
|
|
using Ryujinx.UI.Common.Configuration.System;
|
|
using System.IO;
|
|
using CustomSettingsModel = Ryujinx.UI.Common.Models.CustomSettingsModel;
|
|
using Path = System.IO.Path;
|
|
|
|
namespace Ryujinx.UI.Common.Helper
|
|
{
|
|
public static class CustomSettingsHelper
|
|
{
|
|
private static readonly CustomSettingsMetadataJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
|
|
|
public static CustomSettingsModel LoadCustomSettingsJson(string customSettingsJsonPath)
|
|
{
|
|
var customSettingsModel = new CustomSettingsModel();
|
|
|
|
if (!File.Exists(customSettingsJsonPath))
|
|
{
|
|
return customSettingsModel;
|
|
}
|
|
|
|
try
|
|
{
|
|
Logger.Info?.Print(LogClass.Configuration, $"Found custom settings data for application at {customSettingsJsonPath}");
|
|
customSettingsModel = JsonHelper.DeserializeFromFile(customSettingsJsonPath, _serializerContext.CustomSettingsModel);
|
|
return customSettingsModel;
|
|
}
|
|
catch
|
|
{
|
|
Logger.Error?.Print(LogClass.Configuration, $"Failed to deserialize custom settings data for application at {customSettingsJsonPath}");
|
|
return customSettingsModel;
|
|
}
|
|
}
|
|
|
|
public static void SaveCustomSettingsJson(string customSettingsJsonPath, CustomSettingsModel customSettingsModel)
|
|
{
|
|
if (!File.Exists(customSettingsJsonPath))
|
|
{
|
|
string directoryPath = Path.GetDirectoryName(customSettingsJsonPath);
|
|
|
|
if (!string.IsNullOrEmpty(directoryPath))
|
|
{
|
|
Directory.CreateDirectory(directoryPath);
|
|
}
|
|
}
|
|
|
|
JsonHelper.SerializeToFile(customSettingsJsonPath, customSettingsModel, _serializerContext.CustomSettingsModel);
|
|
}
|
|
|
|
public static bool HasCustomSettings(string customSettingsJsonPath)
|
|
{
|
|
return File.Exists(customSettingsJsonPath);
|
|
}
|
|
|
|
public static void DeleteCustomSettings(string customSettingsJsonPath)
|
|
{
|
|
FileInfo file = new(customSettingsJsonPath);
|
|
|
|
if (file.Exists)
|
|
{
|
|
file.Delete();
|
|
}
|
|
}
|
|
|
|
public static void OverrideSettings(CustomSettingsModel customSettingsModel)
|
|
{
|
|
ConfigurationState.Instance.System.EnableDockedMode.Value = customSettingsModel.EnableDockedMode;
|
|
ConfigurationState.Instance.System.Language.Value = (Language)customSettingsModel.SystemLanguage;
|
|
ConfigurationState.Instance.System.Region.Value = (Region)customSettingsModel.SystemRegion;
|
|
ConfigurationState.Instance.Graphics.VSyncMode.Value = (VSyncMode)customSettingsModel.VSyncMode;
|
|
ConfigurationState.Instance.System.DramSize.Value = (MemoryConfiguration)customSettingsModel.DramSize;
|
|
ConfigurationState.Instance.System.EnableFsIntegrityChecks.Value = customSettingsModel.EnableFsIntegrityChecks;
|
|
ConfigurationState.Instance.System.IgnoreMissingServices.Value = customSettingsModel.IgnoreMissingServices;
|
|
ConfigurationState.Instance.System.EnableLowPowerPptc.Value = customSettingsModel.EnableLowPowerPptc;
|
|
ConfigurationState.Instance.System.MemoryManagerMode.Value = (MemoryManagerMode)customSettingsModel.MemoryManagerMode;
|
|
ConfigurationState.Instance.System.UseHypervisor.Value = customSettingsModel.UseHypervisor;
|
|
ConfigurationState.Instance.Graphics.GraphicsBackend.Value = (GraphicsBackend)customSettingsModel.GraphicsBackend;
|
|
ConfigurationState.Instance.Graphics.PreferredGpu.Value = customSettingsModel.PreferredGpu;
|
|
ConfigurationState.Instance.Graphics.EnableShaderCache.Value = customSettingsModel.EnableShaderCache;
|
|
ConfigurationState.Instance.Graphics.EnableTextureRecompression.Value = customSettingsModel.EnableTextureRecompression;
|
|
ConfigurationState.Instance.Graphics.EnableMacroHLE.Value = customSettingsModel.EnableMacroHLE;
|
|
ConfigurationState.Instance.Graphics.EnableColorSpacePassthrough.Value = customSettingsModel.EnableColorSpacePassthrough;
|
|
ConfigurationState.Instance.Graphics.ResScale.Value = customSettingsModel.ResScale;
|
|
ConfigurationState.Instance.Graphics.MaxAnisotropy.Value = customSettingsModel.MaxAnisotropy;
|
|
ConfigurationState.Instance.Graphics.BackendThreading.Value = (BackendThreading)customSettingsModel.BackendThreading;
|
|
}
|
|
|
|
public static string PathToGameSettingsJson(ulong applicationIdBase)
|
|
{
|
|
return Path.Combine(AppDataManager.GamesDirPath, applicationIdBase.ToString("x16"), "settings.json");
|
|
}
|
|
}
|
|
}
|