diff --git a/src/Ryujinx.Common/Configuration/AntiAliasing.cs b/src/Ryujinx.Common/Configuration/AntiAliasing.cs index 5e3e1b891..1510c23ee 100644 --- a/src/Ryujinx.Common/Configuration/AntiAliasing.cs +++ b/src/Ryujinx.Common/Configuration/AntiAliasing.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum AntiAliasing { None, diff --git a/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs b/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs index f3a9e1646..23ecd5870 100644 --- a/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs +++ b/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum AspectRatio { Fixed4x3, diff --git a/src/Ryujinx.Common/Configuration/BackendThreading.cs b/src/Ryujinx.Common/Configuration/BackendThreading.cs index 4fbb56bcb..198c2eed1 100644 --- a/src/Ryujinx.Common/Configuration/BackendThreading.cs +++ b/src/Ryujinx.Common/Configuration/BackendThreading.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum BackendThreading { Auto, diff --git a/src/Ryujinx.Common/Configuration/GraphicsBackend.cs b/src/Ryujinx.Common/Configuration/GraphicsBackend.cs index e3b4f91b0..ca6298eb5 100644 --- a/src/Ryujinx.Common/Configuration/GraphicsBackend.cs +++ b/src/Ryujinx.Common/Configuration/GraphicsBackend.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum GraphicsBackend { Vulkan, diff --git a/src/Ryujinx.Common/Configuration/GraphicsDebugLevel.cs b/src/Ryujinx.Common/Configuration/GraphicsDebugLevel.cs index dfe28405c..707715bbb 100644 --- a/src/Ryujinx.Common/Configuration/GraphicsDebugLevel.cs +++ b/src/Ryujinx.Common/Configuration/GraphicsDebugLevel.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum GraphicsDebugLevel { None, diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs index 3e317c47c..2d4c23ea7 100644 --- a/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs +++ b/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid.Controller { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum GamepadInputId : byte { Unbound, diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs index fd8391289..fa23e00d3 100644 --- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs +++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid.Controller.Motion { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum MotionInputBackendType : byte { Invalid, diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs index 8f9539c46..6e9920edd 100644 --- a/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs +++ b/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs @@ -1,15 +1,14 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid.Controller { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum StickInputId : byte { Unbound, Left, Right, - + Count, } } diff --git a/src/Ryujinx.Common/Configuration/Hid/ControllerType.cs b/src/Ryujinx.Common/Configuration/Hid/ControllerType.cs index cf61b79fd..904c6d13d 100644 --- a/src/Ryujinx.Common/Configuration/Hid/ControllerType.cs +++ b/src/Ryujinx.Common/Configuration/Hid/ControllerType.cs @@ -1,4 +1,3 @@ -using Ryujinx.Common.Utilities; using System; using System.Text.Json.Serialization; @@ -6,7 +5,7 @@ namespace Ryujinx.Common.Configuration.Hid { // This enum was duplicated from Ryujinx.HLE.HOS.Services.Hid.PlayerIndex and should be kept identical [Flags] - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum ControllerType { None, diff --git a/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs b/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs index b8cfcae2d..c3336dc64 100644 --- a/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs +++ b/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum InputBackendType { Invalid, diff --git a/src/Ryujinx.Common/Configuration/Hid/Key.cs b/src/Ryujinx.Common/Configuration/Hid/Key.cs index e3dd8e50c..cf0f4c076 100644 --- a/src/Ryujinx.Common/Configuration/Hid/Key.cs +++ b/src/Ryujinx.Common/Configuration/Hid/Key.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum Key { Unknown, diff --git a/src/Ryujinx.Common/Configuration/Hid/PlayerIndex.cs b/src/Ryujinx.Common/Configuration/Hid/PlayerIndex.cs index 05e8f3fa4..4675486ef 100644 --- a/src/Ryujinx.Common/Configuration/Hid/PlayerIndex.cs +++ b/src/Ryujinx.Common/Configuration/Hid/PlayerIndex.cs @@ -1,10 +1,9 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration.Hid { // This enum was duplicated from Ryujinx.HLE.HOS.Services.Hid.PlayerIndex and should be kept identical - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum PlayerIndex { Player1 = 0, diff --git a/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs b/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs index 93031928f..83d1e8ae2 100644 --- a/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs +++ b/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum MemoryManagerMode : byte { SoftwarePageTable, diff --git a/src/Ryujinx.Common/Configuration/ScalingFilter.cs b/src/Ryujinx.Common/Configuration/ScalingFilter.cs index 474685d49..9040b1be0 100644 --- a/src/Ryujinx.Common/Configuration/ScalingFilter.cs +++ b/src/Ryujinx.Common/Configuration/ScalingFilter.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum ScalingFilter { Bilinear, diff --git a/src/Ryujinx.Common/Logging/LogClass.cs b/src/Ryujinx.Common/Logging/LogClass.cs index eb0821db6..7c6810599 100644 --- a/src/Ryujinx.Common/Logging/LogClass.cs +++ b/src/Ryujinx.Common/Logging/LogClass.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Logging { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum LogClass { Application, diff --git a/src/Ryujinx.Common/Logging/LogLevel.cs b/src/Ryujinx.Common/Logging/LogLevel.cs index 54261cee5..282b07111 100644 --- a/src/Ryujinx.Common/Logging/LogLevel.cs +++ b/src/Ryujinx.Common/Logging/LogLevel.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Common.Logging { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum LogLevel { Debug, diff --git a/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs b/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs deleted file mode 100644 index d7eb3d556..000000000 --- a/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs +++ /dev/null @@ -1,37 +0,0 @@ -#nullable enable -using Ryujinx.Common.Logging; -using System; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Ryujinx.Common.Utilities -{ - /// - /// Specifies that value of will be serialized as string in JSONs - /// - /// - /// Trimming friendly alternative to . - /// Get rid of this converter if dotnet supports similar functionality out of the box. - /// - /// Type of enum to serialize - public sealed class TypedStringEnumConverter : JsonConverter where TEnum : struct, Enum - { - public override TEnum Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - string? enumValue = reader.GetString(); - - if (Enum.TryParse(enumValue, out TEnum value)) - { - return value; - } - - Logger.Warning?.Print(LogClass.Configuration, $"Failed to parse enum value \"{enumValue}\" for {typeof(TEnum)}, using default \"{default(TEnum)}\""); - return default; - } - - public override void Write(Utf8JsonWriter writer, TEnum value, JsonSerializerOptions options) - { - writer.WriteStringValue(value.ToString()); - } - } -} diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs index 0e35b4812..cb61f6e3c 100644 --- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs +++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.HLE.HOS.Services.Account.Acc { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum AccountState { Closed, diff --git a/src/Ryujinx/Systems/Configuration/AudioBackend.cs b/src/Ryujinx/Systems/Configuration/AudioBackend.cs index f1a0c2362..da75c9f7c 100644 --- a/src/Ryujinx/Systems/Configuration/AudioBackend.cs +++ b/src/Ryujinx/Systems/Configuration/AudioBackend.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Ava.Systems.Configuration { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum AudioBackend { Dummy, diff --git a/src/Ryujinx/Systems/Configuration/System/Language.cs b/src/Ryujinx/Systems/Configuration/System/Language.cs index 3087653e9..dd44dff37 100644 --- a/src/Ryujinx/Systems/Configuration/System/Language.cs +++ b/src/Ryujinx/Systems/Configuration/System/Language.cs @@ -1,10 +1,9 @@ -using Ryujinx.Common.Utilities; using Ryujinx.HLE.HOS.SystemState; using System.Text.Json.Serialization; namespace Ryujinx.Ava.Systems.Configuration.System { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum Language { Japanese, diff --git a/src/Ryujinx/Systems/Configuration/System/Region.cs b/src/Ryujinx/Systems/Configuration/System/Region.cs index 2ba657876..a85dcb85e 100644 --- a/src/Ryujinx/Systems/Configuration/System/Region.cs +++ b/src/Ryujinx/Systems/Configuration/System/Region.cs @@ -1,10 +1,9 @@ -using Ryujinx.Common.Utilities; using Ryujinx.HLE.HOS.SystemState; using System.Text.Json.Serialization; namespace Ryujinx.Ava.Systems.Configuration.System { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum Region { Japan, diff --git a/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs index 9e22f3dca..96eb8ee26 100644 --- a/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs +++ b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Ava.Systems.Configuration.UI { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum FocusLostType { DoNothing, diff --git a/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs index bc2696780..584763722 100644 --- a/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs +++ b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs @@ -1,9 +1,8 @@ -using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; namespace Ryujinx.Ava.Systems.Configuration.UI { - [JsonConverter(typeof(TypedStringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public enum UpdaterType { Off,