diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs')
| -rw-r--r-- | Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs b/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs deleted file mode 100644 index 2b9e0af4..00000000 --- a/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Ryujinx.Common.Utilities; -using System; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Ryujinx.Common.Configuration.Hid.Controller.Motion -{ - class JsonMotionConfigControllerConverter : JsonConverter<MotionConfigController> - { - private static readonly MotionConfigJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions()); - - private static MotionInputBackendType GetMotionInputBackendType(ref Utf8JsonReader reader) - { - // Temporary reader to get the backend type - Utf8JsonReader tempReader = reader; - - MotionInputBackendType result = MotionInputBackendType.Invalid; - - while (tempReader.Read()) - { - // NOTE: We scan all properties ignoring the depth entirely on purpose. - // The reason behind this is that we cannot track in a reliable way the depth of the object because Utf8JsonReader never emit the first TokenType == StartObject if the json start with an object. - // As such, this code will try to parse very field named "motion_backend" to the correct enum. - if (tempReader.TokenType == JsonTokenType.PropertyName) - { - string propertyName = tempReader.GetString(); - - if (propertyName.Equals("motion_backend")) - { - tempReader.Read(); - - if (tempReader.TokenType == JsonTokenType.String) - { - string backendTypeRaw = tempReader.GetString(); - - if (!Enum.TryParse(backendTypeRaw, out result)) - { - result = MotionInputBackendType.Invalid; - } - else - { - break; - } - } - } - } - } - - return result; - } - - public override MotionConfigController Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - MotionInputBackendType motionBackendType = GetMotionInputBackendType(ref reader); - - return motionBackendType switch - { - MotionInputBackendType.GamepadDriver => JsonSerializer.Deserialize(ref reader, SerializerContext.StandardMotionConfigController), - MotionInputBackendType.CemuHook => JsonSerializer.Deserialize(ref reader, SerializerContext.CemuHookMotionConfigController), - _ => throw new InvalidOperationException($"Unknown backend type {motionBackendType}"), - }; - } - - public override void Write(Utf8JsonWriter writer, MotionConfigController value, JsonSerializerOptions options) - { - switch (value.MotionBackend) - { - case MotionInputBackendType.GamepadDriver: - JsonSerializer.Serialize(writer, value as StandardMotionConfigController, SerializerContext.StandardMotionConfigController); - break; - case MotionInputBackendType.CemuHook: - JsonSerializer.Serialize(writer, value as CemuHookMotionConfigController, SerializerContext.CemuHookMotionConfigController); - break; - default: - throw new ArgumentException($"Unknown motion backend type {value.MotionBackend}"); - } - } - } -} |
