aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ui.Common/Configuration
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ui.Common/Configuration')
-rw-r--r--Ryujinx.Ui.Common/Configuration/AudioBackend.cs6
-rw-r--r--Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs12
-rw-r--r--Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs9
-rw-r--r--Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs10
-rw-r--r--Ryujinx.Ui.Common/Configuration/ConfigurationState.cs5
-rw-r--r--Ryujinx.Ui.Common/Configuration/System/Language.cs6
-rw-r--r--Ryujinx.Ui.Common/Configuration/System/Region.cs6
7 files changed, 43 insertions, 11 deletions
diff --git a/Ryujinx.Ui.Common/Configuration/AudioBackend.cs b/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
index 99111ea6..1f9bd0ba 100644
--- a/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
+++ b/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
@@ -1,5 +1,9 @@
-namespace Ryujinx.Ui.Common.Configuration
+using Ryujinx.Common.Utilities;
+using System.Text.Json.Serialization;
+
+namespace Ryujinx.Ui.Common.Configuration
{
+ [JsonConverter(typeof(TypedStringEnumConverter<AudioBackend>))]
public enum AudioBackend
{
Dummy,
diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs
index e9aec04b..14c03957 100644
--- a/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs
+++ b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs
@@ -5,7 +5,7 @@ using Ryujinx.Common.Utilities;
using Ryujinx.Ui.Common.Configuration.System;
using Ryujinx.Ui.Common.Configuration.Ui;
using System.Collections.Generic;
-using System.IO;
+using System.Text.Json.Nodes;
namespace Ryujinx.Ui.Common.Configuration
{
@@ -321,14 +321,14 @@ namespace Ryujinx.Ui.Common.Configuration
/// </summary>
/// <remarks>Kept for file format compatibility (to avoid possible failure when parsing configuration on old versions)</remarks>
/// TODO: Remove this when those older versions aren't in use anymore.
- public List<object> KeyboardConfig { get; set; }
+ public List<JsonObject> KeyboardConfig { get; set; }
/// <summary>
/// Legacy controller control bindings
/// </summary>
/// <remarks>Kept for file format compatibility (to avoid possible failure when parsing configuration on old versions)</remarks>
/// TODO: Remove this when those older versions aren't in use anymore.
- public List<object> ControllerConfig { get; set; }
+ public List<JsonObject> ControllerConfig { get; set; }
/// <summary>
/// Input configurations
@@ -354,11 +354,12 @@ namespace Ryujinx.Ui.Common.Configuration
/// Loads a configuration file from disk
/// </summary>
/// <param name="path">The path to the JSON configuration file</param>
+ /// <param name="configurationFileFormat">Parsed configuration file</param>
public static bool TryLoad(string path, out ConfigurationFileFormat configurationFileFormat)
{
try
{
- configurationFileFormat = JsonHelper.DeserializeFromFile<ConfigurationFileFormat>(path);
+ configurationFileFormat = JsonHelper.DeserializeFromFile(path, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
return configurationFileFormat.Version != 0;
}
@@ -376,8 +377,7 @@ namespace Ryujinx.Ui.Common.Configuration
/// <param name="path">The path to the JSON configuration file</param>
public void SaveConfig(string path)
{
- using FileStream fileStream = File.Create(path, 4096, FileOptions.WriteThrough);
- JsonHelper.Serialize(fileStream, this, true);
+ JsonHelper.SerializeToFile(path, this, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
}
}
}
diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs
new file mode 100644
index 00000000..6ce2ef01
--- /dev/null
+++ b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs
@@ -0,0 +1,9 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Ui.Common.Configuration
+{
+ internal static class ConfigurationFileFormatSettings
+ {
+ public static readonly ConfigurationJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs
new file mode 100644
index 00000000..bb8dfb49
--- /dev/null
+++ b/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs
@@ -0,0 +1,10 @@
+using System.Text.Json.Serialization;
+
+namespace Ryujinx.Ui.Common.Configuration
+{
+ [JsonSourceGenerationOptions(WriteIndented = true)]
+ [JsonSerializable(typeof(ConfigurationFileFormat))]
+ internal partial class ConfigurationJsonSerializerContext : JsonSerializerContext
+ {
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs
index bcdd2e70..82a331c1 100644
--- a/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs
+++ b/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs
@@ -9,6 +9,7 @@ using Ryujinx.Ui.Common.Configuration.Ui;
using Ryujinx.Ui.Common.Helper;
using System;
using System.Collections.Generic;
+using System.Text.Json.Nodes;
namespace Ryujinx.Ui.Common.Configuration
{
@@ -631,8 +632,8 @@ namespace Ryujinx.Ui.Common.Configuration
EnableKeyboard = Hid.EnableKeyboard,
EnableMouse = Hid.EnableMouse,
Hotkeys = Hid.Hotkeys,
- KeyboardConfig = new List<object>(),
- ControllerConfig = new List<object>(),
+ KeyboardConfig = new List<JsonObject>(),
+ ControllerConfig = new List<JsonObject>(),
InputConfig = Hid.InputConfig,
GraphicsBackend = Graphics.GraphicsBackend,
PreferredGpu = Graphics.PreferredGpu
diff --git a/Ryujinx.Ui.Common/Configuration/System/Language.cs b/Ryujinx.Ui.Common/Configuration/System/Language.cs
index 3d2dc991..404f8063 100644
--- a/Ryujinx.Ui.Common/Configuration/System/Language.cs
+++ b/Ryujinx.Ui.Common/Configuration/System/Language.cs
@@ -1,5 +1,9 @@
-namespace Ryujinx.Ui.Common.Configuration.System
+using Ryujinx.Common.Utilities;
+using System.Text.Json.Serialization;
+
+namespace Ryujinx.Ui.Common.Configuration.System
{
+ [JsonConverter(typeof(TypedStringEnumConverter<Language>))]
public enum Language
{
Japanese,
diff --git a/Ryujinx.Ui.Common/Configuration/System/Region.cs b/Ryujinx.Ui.Common/Configuration/System/Region.cs
index fb51e08e..7dfac638 100644
--- a/Ryujinx.Ui.Common/Configuration/System/Region.cs
+++ b/Ryujinx.Ui.Common/Configuration/System/Region.cs
@@ -1,5 +1,9 @@
-namespace Ryujinx.Ui.Common.Configuration.System
+using Ryujinx.Common.Utilities;
+using System.Text.Json.Serialization;
+
+namespace Ryujinx.Ui.Common.Configuration.System
{
+ [JsonConverter(typeof(TypedStringEnumConverter<Region>))]
public enum Region
{
Japan,