diff options
Diffstat (limited to 'Ryujinx.HLE')
8 files changed, 35 insertions, 64 deletions
diff --git a/Ryujinx.HLE/HOS/ApplicationLoader.cs b/Ryujinx.HLE/HOS/ApplicationLoader.cs index 7d06e5eb..82bd9b31 100644 --- a/Ryujinx.HLE/HOS/ApplicationLoader.cs +++ b/Ryujinx.HLE/HOS/ApplicationLoader.cs @@ -13,7 +13,6 @@ using LibHac.Tools.FsSystem; using LibHac.Tools.FsSystem.NcaUtils; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; -using Ryujinx.Common.Utilities; using Ryujinx.Cpu; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.Loaders.Executables; @@ -25,13 +24,14 @@ using System.IO; using System.Linq; using System.Reflection; using System.Text; -using System.Text.Json; using static Ryujinx.HLE.HOS.ModLoader; using ApplicationId = LibHac.Ncm.ApplicationId; using Path = System.IO.Path; namespace Ryujinx.HLE.HOS { + using JsonHelper = Common.Utilities.JsonHelper; + public class ApplicationLoader { // Binaries from exefs are loaded into mem in this order. Do not change. @@ -57,10 +57,6 @@ namespace Ryujinx.HLE.HOS private string _displayVersion; private BlitStruct<ApplicationControlProperty> _controlData; - private static readonly JsonSerializerOptions SerializerOptions = JsonHelper.GetDefaultSerializerOptions(); - private static readonly DownloadableContentJsonSerializerContext ContentSerializerContext = new(SerializerOptions); - private static readonly TitleUpdateMetadataJsonSerializerContext TitleSerializerContext = new(SerializerOptions); - public BlitStruct<ApplicationControlProperty> ControlData => _controlData; public string TitleName => _titleName; public string DisplayVersion => _displayVersion; @@ -201,7 +197,7 @@ namespace Ryujinx.HLE.HOS if (File.Exists(titleUpdateMetadataPath)) { - updatePath = JsonHelper.DeserializeFromFile(titleUpdateMetadataPath, TitleSerializerContext.TitleUpdateMetadata).Selected; + updatePath = JsonHelper.DeserializeFromFile<TitleUpdateMetadata>(titleUpdateMetadataPath).Selected; if (File.Exists(updatePath)) { @@ -415,7 +411,7 @@ namespace Ryujinx.HLE.HOS if (File.Exists(titleAocMetadataPath)) { - List<DownloadableContentContainer> dlcContainerList = JsonHelper.DeserializeFromFile(titleAocMetadataPath, ContentSerializerContext.ListDownloadableContentContainer); + List<DownloadableContentContainer> dlcContainerList = JsonHelper.DeserializeFromFile<List<DownloadableContentContainer>>(titleAocMetadataPath); foreach (DownloadableContentContainer downloadableContentContainer in dlcContainerList) { diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs index 535779d2..ec0b0a10 100644 --- a/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs +++ b/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs @@ -1,11 +1,11 @@ using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; using Ryujinx.Common.Utilities; -using Ryujinx.HLE.HOS.Services.Account.Acc.Types; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; +using System.Text.Json.Serialization; namespace Ryujinx.HLE.HOS.Services.Account.Acc { @@ -13,7 +13,29 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc { private readonly string _profilesJsonPath = Path.Join(AppDataManager.BaseDirPath, "system", "Profiles.json"); - private static readonly ProfilesJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions()); + private struct ProfilesJson + { + [JsonPropertyName("profiles")] + public List<UserProfileJson> Profiles { get; set; } + [JsonPropertyName("last_opened")] + public string LastOpened { get; set; } + } + + private struct UserProfileJson + { + [JsonPropertyName("user_id")] + public string UserId { get; set; } + [JsonPropertyName("name")] + public string Name { get; set; } + [JsonPropertyName("account_state")] + public AccountState AccountState { get; set; } + [JsonPropertyName("online_play_state")] + public AccountState OnlinePlayState { get; set; } + [JsonPropertyName("last_modified_timestamp")] + public long LastModifiedTimestamp { get; set; } + [JsonPropertyName("image")] + public byte[] Image { get; set; } + } public UserId LastOpened { get; set; } @@ -25,7 +47,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc { try { - ProfilesJson profilesJson = JsonHelper.DeserializeFromFile(_profilesJsonPath, SerializerContext.ProfilesJson); + ProfilesJson profilesJson = JsonHelper.DeserializeFromFile<ProfilesJson>(_profilesJsonPath); foreach (var profile in profilesJson.Profiles) { @@ -70,7 +92,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc }); } - JsonHelper.SerializeToFile(_profilesJsonPath, profilesJson, SerializerContext.ProfilesJson); + File.WriteAllText(_profilesJsonPath, JsonHelper.Serialize(profilesJson, true)); } } }
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs deleted file mode 100644 index 6b54898e..00000000 --- a/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Ryujinx.HLE.HOS.Services.Account.Acc.Types; -using System.Text.Json.Serialization; - -namespace Ryujinx.HLE.HOS.Services.Account.Acc -{ - [JsonSourceGenerationOptions(WriteIndented = true)] - [JsonSerializable(typeof(ProfilesJson))] - internal partial class ProfilesJsonSerializerContext : JsonSerializerContext - { - } -}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs index 1699abfb..2382a255 100644 --- a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs +++ b/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountState.cs @@ -1,9 +1,5 @@ -using Ryujinx.Common.Utilities; -using System.Text.Json.Serialization; - namespace Ryujinx.HLE.HOS.Services.Account.Acc { - [JsonConverter(typeof(TypedStringEnumConverter<AccountState>))] public enum AccountState { Closed, diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs deleted file mode 100644 index 09f9d142..00000000 --- a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; - -namespace Ryujinx.HLE.HOS.Services.Account.Acc.Types -{ - internal struct ProfilesJson - { - public List<UserProfileJson> Profiles { get; set; } - public string LastOpened { get; set; } - } -}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs deleted file mode 100644 index 06ff4833..00000000 --- a/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Ryujinx.HLE.HOS.Services.Account.Acc.Types -{ - internal struct UserProfileJson - { - public string UserId { get; set; } - public string Name { get; set; } - public AccountState AccountState { get; set; } - public AccountState OnlinePlayState { get; set; } - public long LastModifiedTimestamp { get; set; } - public byte[] Image { get; set; } - } -}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs deleted file mode 100644 index e75f6200..00000000 --- a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager; -using System.Text.Json.Serialization; - -namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp -{ - [JsonSerializable(typeof(VirtualAmiiboFile))] - internal partial class AmiiboJsonSerializerContext : JsonSerializerContext - { - } -}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs index 9166e87f..4fdeadcb 100644 --- a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs +++ b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs @@ -1,6 +1,5 @@ using Ryujinx.Common.Configuration; using Ryujinx.Common.Memory; -using Ryujinx.Common.Utilities; using Ryujinx.Cpu; using Ryujinx.HLE.HOS.Services.Mii; using Ryujinx.HLE.HOS.Services.Mii.Types; @@ -9,6 +8,8 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text; +using System.Text.Json; namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp { @@ -16,8 +17,6 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp { private static uint _openedApplicationAreaId; - private static readonly AmiiboJsonSerializerContext SerializerContext = AmiiboJsonSerializerContext.Default; - public static byte[] GenerateUuid(string amiiboId, bool useRandomUuid) { if (useRandomUuid) @@ -174,7 +173,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp if (File.Exists(filePath)) { - virtualAmiiboFile = JsonHelper.DeserializeFromFile(filePath, SerializerContext.VirtualAmiiboFile); + virtualAmiiboFile = JsonSerializer.Deserialize<VirtualAmiiboFile>(File.ReadAllText(filePath), new JsonSerializerOptions(JsonSerializerDefaults.General)); } else { @@ -198,7 +197,8 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp private static void SaveAmiiboFile(VirtualAmiiboFile virtualAmiiboFile) { string filePath = Path.Join(AppDataManager.BaseDirPath, "system", "amiibo", $"{virtualAmiiboFile.AmiiboId}.json"); - JsonHelper.SerializeToFile(filePath, virtualAmiiboFile, SerializerContext.VirtualAmiiboFile); + + File.WriteAllText(filePath, JsonSerializer.Serialize(virtualAmiiboFile)); } } } |
