diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs index 40c54b6f7..b50eb6912 100644 --- a/src/Ryujinx/AppHost.cs +++ b/src/Ryujinx/AppHost.cs @@ -21,8 +21,8 @@ using Ryujinx.Ava.UI.Renderer; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Multiplayer; diff --git a/src/Ryujinx/Assets/Styles/Styles.xaml b/src/Ryujinx/Assets/Styles/Styles.xaml index 9c61faa5a..ff9a528a5 100644 --- a/src/Ryujinx/Assets/Styles/Styles.xaml +++ b/src/Ryujinx/Assets/Styles/Styles.xaml @@ -439,7 +439,7 @@ 13 26 28 - 900 + 700 756 diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 9eafb76d3..2a0973dd1 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -23922,6 +23922,31 @@ "zh_TW": "上次更新時間: {0}" } }, + { + "ID": "CompatibilityListTitle", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Compatibility List - {0} entries", + "es_ES": "", + "fr_FR": "", + "he_IL": "", + "it_IT": "", + "ja_JP": "", + "ko_KR": "", + "no_NO": "", + "pl_PL": "", + "pt_BR": "", + "ru_RU": "", + "sv_SE": "", + "th_TH": "", + "tr_TR": "", + "uk_UA": "", + "zh_CN": "", + "zh_TW": "" + } + }, { "ID": "CompatibilityListWarning", "Translations": { @@ -23972,6 +23997,31 @@ "zh_TW": "搜尋相容性列表紀錄..." } }, + { + "ID": "CompatibilityListSearchBoxWatermarkWithCount", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Search {0} compatibility entries...", + "es_ES": "", + "fr_FR": "", + "he_IL": "", + "it_IT": "", + "ja_JP": "", + "ko_KR": "", + "no_NO": "Søk i {0} kompatibilitetsoppføringer...", + "pl_PL": "", + "pt_BR": "", + "ru_RU": "", + "sv_SE": "", + "th_TH": "", + "tr_TR": "", + "uk_UA": "", + "zh_CN": "", + "zh_TW": "" + } + }, { "ID": "CompatibilityListOpen", "Translations": { diff --git a/src/Ryujinx/Common/ApplicationHelper.cs b/src/Ryujinx/Common/ApplicationHelper.cs index 86e5ee310..0b81e8cff 100644 --- a/src/Ryujinx/Common/ApplicationHelper.cs +++ b/src/Ryujinx/Common/ApplicationHelper.cs @@ -16,7 +16,7 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Helper; using Ryujinx.Common.Logging; using Ryujinx.HLE.FileSystem; @@ -216,11 +216,7 @@ namespace Ryujinx.Ava.Common return; } - IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks - ? IntegrityCheckLevel.ErrorOnInvalid - : IntegrityCheckLevel.None; - - (Nca updatePatchNca, _) = mainNca.GetUpdateData(_virtualFileSystem, checkLevel, programIndex, out _); + (Nca updatePatchNca, _) = mainNca.GetUpdateData(_virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel, programIndex, out _); if (updatePatchNca is not null) { patchNca = updatePatchNca; diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs index f60cff49b..9aa82a4a5 100644 --- a/src/Ryujinx/Common/LocaleManager.cs +++ b/src/Ryujinx/Common/LocaleManager.cs @@ -1,6 +1,7 @@ using Gommon; +using Ryujinx.Ava.Systems; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Utilities; using System; @@ -25,7 +26,21 @@ namespace Ryujinx.Ava.Common.Locale public LocaleManager() { _localeStrings = new Dictionary(); - _dynamicValues = new ConcurrentDictionary(); + _dynamicValues = new ConcurrentDictionary(new Dictionary + { + { LocaleKeys.DialogConfirmationTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.DialogUpdaterTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.DialogErrorTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.DialogWarningTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.DialogExitTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.DialogStopEmulationTitle, [RyujinxApp.FullAppName] }, + { LocaleKeys.RyujinxInfo, [RyujinxApp.FullAppName] }, + { LocaleKeys.RyujinxConfirm, [RyujinxApp.FullAppName] }, + { LocaleKeys.RyujinxUpdater, [RyujinxApp.FullAppName] }, + { LocaleKeys.RyujinxRebooter, [RyujinxApp.FullAppName] }, + { LocaleKeys.CompatibilityListSearchBoxWatermarkWithCount, [CompatibilityCsv.Entries.Length] }, + { LocaleKeys.CompatibilityListTitle, [CompatibilityCsv.Entries.Length] } + }); Load(); } @@ -44,17 +59,6 @@ namespace Ryujinx.Ava.Common.Locale ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath); } - - SetDynamicValues(LocaleKeys.DialogConfirmationTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.DialogUpdaterTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.DialogErrorTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.DialogWarningTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.DialogExitTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.DialogStopEmulationTitle, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.RyujinxInfo, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.RyujinxConfirm, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.RyujinxUpdater, RyujinxApp.FullAppName); - SetDynamicValues(LocaleKeys.RyujinxRebooter, RyujinxApp.FullAppName); } public string this[LocaleKeys key] diff --git a/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs b/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs index da59a5d52..cddc5de22 100644 --- a/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs +++ b/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs @@ -1,4 +1,4 @@ -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Logging; using Ryujinx.Common.Utilities; diff --git a/src/Ryujinx/DiscordIntegrationModule.cs b/src/Ryujinx/DiscordIntegrationModule.cs index 8d232b4fb..142261d72 100644 --- a/src/Ryujinx/DiscordIntegrationModule.cs +++ b/src/Ryujinx/DiscordIntegrationModule.cs @@ -1,9 +1,9 @@ using DiscordRPC; using Gommon; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Configuration; -using Ryujinx.Ava.Utilities.PlayReport; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.PlayReport; using Ryujinx.Common; using Ryujinx.Common.Logging; using Ryujinx.HLE; diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs index d6a2ed789..7ff0a5259 100644 --- a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs +++ b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs @@ -2,7 +2,7 @@ using DiscordRPC; using LibHac.Tools.FsSystem; using Ryujinx.Audio.Backends.SDL2; using Ryujinx.Ava; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Hid.Controller; diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs index 9a69c56dd..f346f1f63 100644 --- a/src/Ryujinx/Headless/HeadlessRyujinx.cs +++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs @@ -1,7 +1,7 @@ using CommandLine; using Gommon; using Ryujinx.Ava; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; diff --git a/src/Ryujinx/Headless/Options.cs b/src/Ryujinx/Headless/Options.cs index 6658ba3ad..8305cd311 100644 --- a/src/Ryujinx/Headless/Options.cs +++ b/src/Ryujinx/Headless/Options.cs @@ -1,6 +1,7 @@ using CommandLine; using Gommon; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.Configuration.System; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.HLE; @@ -37,7 +38,7 @@ namespace Ryujinx.Headless EnableInternetAccess = configurationState.System.EnableInternetAccess; if (NeedsOverride(nameof(DisableFsIntegrityChecks))) - DisableFsIntegrityChecks = configurationState.System.EnableFsIntegrityChecks; + DisableFsIntegrityChecks = !configurationState.System.EnableFsIntegrityChecks; if (NeedsOverride(nameof(FsGlobalAccessLogMode))) FsGlobalAccessLogMode = configurationState.System.FsGlobalAccessLogMode; @@ -58,10 +59,10 @@ namespace Ryujinx.Headless DisableDockedMode = !configurationState.System.EnableDockedMode; if (NeedsOverride(nameof(SystemLanguage))) - SystemLanguage = (SystemLanguage)(int)configurationState.System.Language.Value; + SystemLanguage = configurationState.System.Language.Value.ToHLE(); if (NeedsOverride(nameof(SystemRegion))) - SystemRegion = (RegionCode)(int)configurationState.System.Region.Value; + SystemRegion = configurationState.System.Region.Value.ToHLE(); if (NeedsOverride(nameof(SystemTimeZone))) SystemTimeZone = configurationState.System.TimeZone; diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs index edd46a7db..c24725b5c 100644 --- a/src/Ryujinx/Program.cs +++ b/src/Ryujinx/Program.cs @@ -8,7 +8,8 @@ using Projektanker.Icons.Avalonia.MaterialDesign; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.Configuration.System; using Ryujinx.Ava.Utilities.SystemInfo; using Ryujinx.Common; using Ryujinx.Common.Configuration; @@ -282,16 +283,16 @@ namespace Ryujinx.Ava // Check if region was overridden. if (CommandLineState.OverrideSystemRegion is not null) - if (Enum.TryParse(CommandLineState.OverrideSystemRegion, true, out Ryujinx.HLE.HOS.SystemState.RegionCode result)) + if (Enum.TryParse(CommandLineState.OverrideSystemRegion, true, out HLE.HOS.SystemState.RegionCode result)) { - ConfigurationState.Instance.System.Region.Value = (Utilities.Configuration.System.Region)result; + ConfigurationState.Instance.System.Region.Value = result.ToUI(); } //Check if language was overridden. if (CommandLineState.OverrideSystemLanguage is not null) - if (Enum.TryParse(CommandLineState.OverrideSystemLanguage, true, out Ryujinx.HLE.HOS.SystemState.SystemLanguage result)) + if (Enum.TryParse(CommandLineState.OverrideSystemLanguage, true, out HLE.HOS.SystemState.SystemLanguage result)) { - ConfigurationState.Instance.System.Language.Value = (Utilities.Configuration.System.Language)result; + ConfigurationState.Instance.System.Language.Value = result.ToUI(); } // Check if hardware-acceleration was overridden. diff --git a/src/Ryujinx/RyujinxApp.axaml.cs b/src/Ryujinx/RyujinxApp.axaml.cs index 8bfe1660d..0a0f0a13c 100644 --- a/src/Ryujinx/RyujinxApp.axaml.cs +++ b/src/Ryujinx/RyujinxApp.axaml.cs @@ -12,7 +12,7 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Logging; using System; diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs similarity index 81% rename from src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs rename to src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs index 9bbaef0e3..7866ffa3a 100644 --- a/src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs @@ -1,6 +1,6 @@ using System; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public class ApplicationCountUpdatedEventArgs : EventArgs { diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs similarity index 98% rename from src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs rename to src/Ryujinx/Systems/AppLibrary/ApplicationData.cs index 16e7dec06..e04ea454a 100644 --- a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs @@ -9,8 +9,8 @@ using LibHac.Tools.Fs; using LibHac.Tools.FsSystem; using LibHac.Tools.FsSystem.NcaUtils; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.Utilities.Compat; -using Ryujinx.Ava.Utilities.PlayReport; +using Ryujinx.Ava.Utilities; +using Ryujinx.Ava.Systems.PlayReport; using Ryujinx.Common.Logging; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.Loaders.Processes.Extensions; @@ -18,7 +18,7 @@ using System; using System.IO; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public class ApplicationData { diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs similarity index 85% rename from src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs rename to src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs index d443ab66e..3fd24a6ba 100644 --- a/src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(ApplicationMetadata))] diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs similarity index 99% rename from src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs rename to src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs index c85053723..b7321d6c1 100644 --- a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs @@ -12,8 +12,9 @@ using LibHac.Tools.Fs; using LibHac.Tools.FsSystem; using LibHac.Tools.FsSystem.NcaUtils; using Ryujinx.Ava.Common.Models; -using Ryujinx.Ava.Utilities.Configuration; -using Ryujinx.Ava.Utilities.Configuration.System; +using Ryujinx.Ava.Utilities; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.Configuration.System; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Multiplayer; @@ -38,7 +39,7 @@ using MissingKeyException = LibHac.Common.Keys.MissingKeyException; using Path = System.IO.Path; using TimeSpan = System.TimeSpan; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public class ApplicationLibrary { @@ -617,15 +618,11 @@ namespace Ryujinx.Ava.Utilities.AppLibrary case ".xci": case ".nsp": { - IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks - ? IntegrityCheckLevel.ErrorOnInvalid - : IntegrityCheckLevel.None; - using IFileSystem pfs = PartitionFileSystemUtils.OpenApplicationFileSystem(filePath, _virtualFileSystem); Dictionary updates = - pfs.GetContentData(ContentMetaType.Patch, _virtualFileSystem, checkLevel); + pfs.GetContentData(ContentMetaType.Patch, _virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel); if (updates.Count == 0) { diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs similarity index 97% rename from src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs rename to src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs index d823c7482..9d8488aeb 100644 --- a/src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs @@ -1,7 +1,7 @@ using System; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public class ApplicationMetadata { diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameData.cs similarity index 97% rename from src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs rename to src/Ryujinx/Systems/AppLibrary/LdnGameData.cs index 252c0ecdc..6750983d6 100644 --- a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs +++ b/src/Ryujinx/Systems/AppLibrary/LdnGameData.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public struct LdnGameData { diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs similarity index 90% rename from src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs rename to src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs index 0eaa6ecb3..6c80c1924 100644 --- a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs +++ b/src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { public class LdnGameDataReceivedEventArgs : EventArgs { diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs similarity index 83% rename from src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs rename to src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs index 90d1894c7..ff7718ed5 100644 --- a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs +++ b/src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.AppLibrary +namespace Ryujinx.Ava.Systems.AppLibrary { [JsonSerializable(typeof(IEnumerable))] internal partial class LdnGameDataSerializerContext : JsonSerializerContext; diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs b/src/Ryujinx/Systems/CompatibilityCsv.cs similarity index 99% rename from src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs rename to src/Ryujinx/Systems/CompatibilityCsv.cs index b58c05299..9bab87d9f 100644 --- a/src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs +++ b/src/Ryujinx/Systems/CompatibilityCsv.cs @@ -9,7 +9,7 @@ using System.Linq; using System.Reflection; using System.Text; -namespace Ryujinx.Ava.Utilities.Compat +namespace Ryujinx.Ava.Systems { public struct ColumnIndices(Func, int> getIndex) { diff --git a/src/Ryujinx/Utilities/Configuration/AudioBackend.cs b/src/Ryujinx/Systems/Configuration/AudioBackend.cs similarity index 84% rename from src/Ryujinx/Utilities/Configuration/AudioBackend.cs rename to src/Ryujinx/Systems/Configuration/AudioBackend.cs index 8394bb282..a0aa30f38 100644 --- a/src/Ryujinx/Utilities/Configuration/AudioBackend.cs +++ b/src/Ryujinx/Systems/Configuration/AudioBackend.cs @@ -1,7 +1,7 @@ using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { [JsonConverter(typeof(TypedStringEnumConverter))] public enum AudioBackend diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs similarity index 99% rename from src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs index 814a48e53..042f95c46 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs @@ -1,5 +1,5 @@ -using Ryujinx.Ava.Utilities.Configuration.System; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.Configuration.System; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Multiplayer; @@ -8,7 +8,7 @@ using Ryujinx.Common.Utilities; using Ryujinx.HLE; using System.Collections.Generic; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public class ConfigurationFileFormat { diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs similarity index 83% rename from src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs index 175d4dee8..1d0350dd3 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs @@ -1,6 +1,6 @@ using Ryujinx.Common.Utilities; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { internal static class ConfigurationFileFormatSettings { diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs b/src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs similarity index 84% rename from src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs index a81e00f4a..8574b3a93 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(ConfigurationFileFormat))] diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs similarity index 99% rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs index 8a0ddb560..fcea6dbf0 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs @@ -1,7 +1,7 @@ using Avalonia.Media; using Gommon; -using Ryujinx.Ava.Utilities.Configuration.System; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.Configuration.System; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Hid.Controller; @@ -14,7 +14,7 @@ using System.Collections.Generic; using System.Linq; using RyuLogger = Ryujinx.Common.Logging.Logger; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public partial class ConfigurationState { diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs similarity index 98% rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs index 2ebf5725b..4d8a75de9 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs @@ -1,8 +1,8 @@ using ARMeilleure; using Gommon; using LibHac.Tools.FsSystem; -using Ryujinx.Ava.Utilities.Configuration.System; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.Configuration.System; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; @@ -16,7 +16,7 @@ using System.Collections.Generic; using System.Linq; using RyuLogger = Ryujinx.Common.Logging.Logger; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public partial class ConfigurationState { @@ -352,6 +352,10 @@ namespace Ryujinx.Ava.Utilities.Configuration /// public ReactiveObject EnableFsIntegrityChecks { get; private set; } + public IntegrityCheckLevel IntegrityCheckLevel => EnableFsIntegrityChecks + ? IntegrityCheckLevel.ErrorOnInvalid + : IntegrityCheckLevel.None; + /// /// Enables FS access log output to the console. Possible modes are 0-3 /// @@ -843,8 +847,8 @@ namespace Ryujinx.Ava.Utilities.Configuration public HleConfiguration CreateHleConfiguration() => new( System.DramSize, - (SystemLanguage)System.Language.Value, - (RegionCode)System.Region.Value, + System.Language.Value.ToHLE(), + System.Region.Value.ToHLE(), Graphics.VSyncMode, System.EnableDockedMode, System.EnablePtc, diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs similarity index 99% rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.cs rename to src/Ryujinx/Systems/Configuration/ConfigurationState.cs index 5fb313cad..811c0b971 100644 --- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs @@ -1,5 +1,5 @@ -using Ryujinx.Ava.Utilities.Configuration.System; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.Configuration.System; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Hid.Keyboard; @@ -9,7 +9,7 @@ using Ryujinx.HLE; using System; using System.Linq; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public partial class ConfigurationState { diff --git a/src/Ryujinx/Utilities/Configuration/FileTypes.cs b/src/Ryujinx/Systems/Configuration/FileTypes.cs similarity index 90% rename from src/Ryujinx/Utilities/Configuration/FileTypes.cs rename to src/Ryujinx/Systems/Configuration/FileTypes.cs index c4550b5a6..70517683b 100644 --- a/src/Ryujinx/Utilities/Configuration/FileTypes.cs +++ b/src/Ryujinx/Systems/Configuration/FileTypes.cs @@ -1,8 +1,8 @@ using System; -using static Ryujinx.Ava.Utilities.Configuration.ConfigurationState.UISection; +using static Ryujinx.Ava.Systems.Configuration.ConfigurationState.UISection; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public enum FileTypes { diff --git a/src/Ryujinx/Utilities/Configuration/LoggerModule.cs b/src/Ryujinx/Systems/Configuration/LoggerModule.cs similarity index 98% rename from src/Ryujinx/Utilities/Configuration/LoggerModule.cs rename to src/Ryujinx/Systems/Configuration/LoggerModule.cs index f6c1be082..941556c43 100644 --- a/src/Ryujinx/Utilities/Configuration/LoggerModule.cs +++ b/src/Ryujinx/Systems/Configuration/LoggerModule.cs @@ -4,7 +4,7 @@ using Ryujinx.Common.Logging.Targets; using System; using System.IO; -namespace Ryujinx.Ava.Utilities.Configuration +namespace Ryujinx.Ava.Systems.Configuration { public static class LoggerModule { diff --git a/src/Ryujinx/Utilities/Configuration/System/Language.cs b/src/Ryujinx/Systems/Configuration/System/Language.cs similarity index 58% rename from src/Ryujinx/Utilities/Configuration/System/Language.cs rename to src/Ryujinx/Systems/Configuration/System/Language.cs index 81a9bd192..ff1476b73 100644 --- a/src/Ryujinx/Utilities/Configuration/System/Language.cs +++ b/src/Ryujinx/Systems/Configuration/System/Language.cs @@ -1,7 +1,7 @@ using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.Configuration.System +namespace Ryujinx.Ava.Systems.Configuration.System { [JsonConverter(typeof(TypedStringEnumConverter))] public enum Language @@ -25,4 +25,13 @@ namespace Ryujinx.Ava.Utilities.Configuration.System TraditionalChinese, BrazilianPortuguese, } + + public static class LanguageEnumHelper + { + public static Language ToUI(this HLE.HOS.SystemState.SystemLanguage hleLanguage) + => (Language)hleLanguage; + + public static HLE.HOS.SystemState.SystemLanguage ToHLE(this Language uiLanguage) + => (HLE.HOS.SystemState.SystemLanguage)uiLanguage; + } } diff --git a/src/Ryujinx/Systems/Configuration/System/Region.cs b/src/Ryujinx/Systems/Configuration/System/Region.cs new file mode 100644 index 000000000..0089f073c --- /dev/null +++ b/src/Ryujinx/Systems/Configuration/System/Region.cs @@ -0,0 +1,26 @@ +using Ryujinx.Common.Utilities; +using System.Text.Json.Serialization; + +namespace Ryujinx.Ava.Systems.Configuration.System +{ + [JsonConverter(typeof(TypedStringEnumConverter))] + public enum Region + { + Japan, + USA, + Europe, + Australia, + China, + Korea, + Taiwan, + } + + public static class RegionEnumHelper + { + public static Region ToUI(this HLE.HOS.SystemState.RegionCode hleRegion) + => (Region)hleRegion; + + public static HLE.HOS.SystemState.RegionCode ToHLE(this Region uiRegion) + => (HLE.HOS.SystemState.RegionCode)uiRegion; + } +} diff --git a/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs b/src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs similarity index 73% rename from src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs rename to src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs index e74ca0ec5..e5f54c799 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs +++ b/src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs @@ -1,4 +1,4 @@ -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { public struct ColumnSort { diff --git a/src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs similarity index 86% rename from src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs rename to src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs index eea588539..2d0341022 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs +++ b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs @@ -1,7 +1,7 @@ using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { [JsonConverter(typeof(TypedStringEnumConverter))] public enum FocusLostType diff --git a/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs b/src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs similarity index 91% rename from src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs rename to src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs index 0ab9885fe..a0021be96 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs +++ b/src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs @@ -1,4 +1,4 @@ -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { public struct GuiColumns { diff --git a/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs b/src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs similarity index 85% rename from src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs rename to src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs index 9541b4885..bc32bd153 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs +++ b/src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs @@ -1,4 +1,4 @@ -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { public struct ShownFileTypes { diff --git a/src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs similarity index 83% rename from src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs rename to src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs index 2ab17a497..06cf35d10 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs +++ b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs @@ -1,7 +1,7 @@ using Ryujinx.Common.Utilities; using System.Text.Json.Serialization; -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { [JsonConverter(typeof(TypedStringEnumConverter))] public enum UpdaterType diff --git a/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs b/src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs similarity index 85% rename from src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs rename to src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs index 6c5e36879..be93ef4b6 100644 --- a/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs +++ b/src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs @@ -1,4 +1,4 @@ -namespace Ryujinx.Ava.Utilities.Configuration.UI +namespace Ryujinx.Ava.Systems.Configuration.UI { public struct WindowStartup { diff --git a/src/Ryujinx/Utilities/PlayReport/Analyzer.cs b/src/Ryujinx/Systems/PlayReport/Analyzer.cs similarity index 98% rename from src/Ryujinx/Utilities/PlayReport/Analyzer.cs rename to src/Ryujinx/Systems/PlayReport/Analyzer.cs index 8faf4fb31..d4198cdcf 100644 --- a/src/Ryujinx/Utilities/PlayReport/Analyzer.cs +++ b/src/Ryujinx/Systems/PlayReport/Analyzer.cs @@ -1,5 +1,5 @@ using Gommon; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Logging; using System; using System.Collections.Generic; @@ -7,7 +7,7 @@ using System.Collections.ObjectModel; using System.Globalization; using System.Linq; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { /// /// The entrypoint for the Play Report analysis system. diff --git a/src/Ryujinx/Utilities/PlayReport/Delegates.cs b/src/Ryujinx/Systems/PlayReport/Delegates.cs similarity index 97% rename from src/Ryujinx/Utilities/PlayReport/Delegates.cs rename to src/Ryujinx/Systems/PlayReport/Delegates.cs index 92569d32e..b3496ec4d 100644 --- a/src/Ryujinx/Utilities/PlayReport/Delegates.cs +++ b/src/Ryujinx/Systems/PlayReport/Delegates.cs @@ -1,4 +1,4 @@ -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { /// /// The delegate type that powers single value formatters.
diff --git a/src/Ryujinx/Utilities/PlayReport/MatchedValues.cs b/src/Ryujinx/Systems/PlayReport/MatchedValues.cs similarity index 96% rename from src/Ryujinx/Utilities/PlayReport/MatchedValues.cs rename to src/Ryujinx/Systems/PlayReport/MatchedValues.cs index 46cae678a..025130758 100644 --- a/src/Ryujinx/Utilities/PlayReport/MatchedValues.cs +++ b/src/Ryujinx/Systems/PlayReport/MatchedValues.cs @@ -1,8 +1,8 @@ using MsgPack; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System.Collections.Generic; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { public abstract class MatchedValue { diff --git a/src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs b/src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs similarity index 99% rename from src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs rename to src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs index b5215c693..5c5fb40f4 100644 --- a/src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs +++ b/src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs @@ -5,7 +5,7 @@ using System.Buffers.Binary; using System.Collections.Generic; using System.Linq; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { public partial class PlayReports { diff --git a/src/Ryujinx/Utilities/PlayReport/PlayReports.cs b/src/Ryujinx/Systems/PlayReport/PlayReports.cs similarity index 99% rename from src/Ryujinx/Utilities/PlayReport/PlayReports.cs rename to src/Ryujinx/Systems/PlayReport/PlayReports.cs index c46ae2be5..e42ca185c 100644 --- a/src/Ryujinx/Utilities/PlayReport/PlayReports.cs +++ b/src/Ryujinx/Systems/PlayReport/PlayReports.cs @@ -1,6 +1,6 @@ using System; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { public static partial class PlayReports { diff --git a/src/Ryujinx/Utilities/PlayReport/Specs.cs b/src/Ryujinx/Systems/PlayReport/Specs.cs similarity index 97% rename from src/Ryujinx/Utilities/PlayReport/Specs.cs rename to src/Ryujinx/Systems/PlayReport/Specs.cs index c162d4c2c..2dd1c02ac 100644 --- a/src/Ryujinx/Utilities/PlayReport/Specs.cs +++ b/src/Ryujinx/Systems/PlayReport/Specs.cs @@ -1,10 +1,10 @@ using MsgPack; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; using System.Collections.Generic; using System.Linq; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { /// /// A mapping of title IDs to value formatter specs. @@ -103,7 +103,7 @@ namespace Ryujinx.Ava.Utilities.PlayReport /// matching a specific set of keys that could exist in a Play Report for the previously specified title IDs. ///

/// The 'Sparse' multi-value formatters do not require every key to be present. - /// If you need this requirement, use . + /// If you need this requirement, use . ///
/// The key names to match. /// The function which can format the values. @@ -118,7 +118,7 @@ namespace Ryujinx.Ava.Utilities.PlayReport /// matching a specific set of keys that could exist in a Play Report for the previously specified title IDs. ///

/// The 'Sparse' multi-value formatters do not require every key to be present. - /// If you need this requirement, use . + /// If you need this requirement, use . ///
/// The resolution priority of this value formatter. Higher resolves sooner. /// The key names to match. diff --git a/src/Ryujinx/Utilities/PlayReport/Value.cs b/src/Ryujinx/Systems/PlayReport/Value.cs similarity index 99% rename from src/Ryujinx/Utilities/PlayReport/Value.cs rename to src/Ryujinx/Systems/PlayReport/Value.cs index b3108a41e..1c738c213 100644 --- a/src/Ryujinx/Utilities/PlayReport/Value.cs +++ b/src/Ryujinx/Systems/PlayReport/Value.cs @@ -3,7 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; -namespace Ryujinx.Ava.Utilities.PlayReport +namespace Ryujinx.Ava.Systems.PlayReport { /// /// The base input data to a ValueFormatter delegate, diff --git a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs index a8a6f24c6..18252f337 100644 --- a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs +++ b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs @@ -7,7 +7,7 @@ using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.HLE; using Ryujinx.HLE.HOS.Applets; diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs index cd6700aea..9635582c8 100644 --- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs +++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs @@ -12,8 +12,7 @@ using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Views.Misc; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Compat; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Configuration; using Ryujinx.Common.Helper; using Ryujinx.HLE.HOS; @@ -408,7 +407,7 @@ namespace Ryujinx.Ava.UI.Controls public async void OpenApplicationCompatibility_Click(object sender, RoutedEventArgs args) { if (sender is MenuItem { DataContext: MainWindowViewModel { SelectedApplication: not null } viewModel }) - await CompatibilityList.Show(viewModel.SelectedApplication.IdString); + await CompatibilityListWindow.Show(viewModel.SelectedApplication.IdString); } public async void OpenApplicationData_Click(object sender, RoutedEventArgs args) diff --git a/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs b/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs index 0ceaa6c4c..93f6b4c3c 100644 --- a/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs +++ b/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs @@ -1,5 +1,5 @@ using Avalonia.Interactivity; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; namespace Ryujinx.Ava.UI.Helpers { diff --git a/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs b/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs index 7694e8883..1dca0d164 100644 --- a/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs +++ b/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs @@ -2,7 +2,7 @@ using Avalonia.Data.Converters; using Avalonia.Markup.Xaml; using Gommon; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; using System.Globalization; using System.Text; diff --git a/src/Ryujinx/UI/Helpers/LoggerAdapter.cs b/src/Ryujinx/UI/Helpers/LoggerAdapter.cs index ba317e74a..902d3966f 100644 --- a/src/Ryujinx/UI/Helpers/LoggerAdapter.cs +++ b/src/Ryujinx/UI/Helpers/LoggerAdapter.cs @@ -1,7 +1,7 @@ using Avalonia.Logging; using Avalonia.Utilities; using Gommon; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Logging; using System; using System.Text; diff --git a/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs b/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs index f2d27f2df..3808ae6a2 100644 --- a/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs +++ b/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs @@ -1,4 +1,4 @@ -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; using System.Collections.Generic; diff --git a/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs b/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs index d7ae51e96..321bde09b 100644 --- a/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs +++ b/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs @@ -1,4 +1,4 @@ -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; using System.Collections.Generic; diff --git a/src/Ryujinx/UI/Models/SaveModel.cs b/src/Ryujinx/UI/Models/SaveModel.cs index d50aabc4e..1a4718ddf 100644 --- a/src/Ryujinx/UI/Models/SaveModel.cs +++ b/src/Ryujinx/UI/Models/SaveModel.cs @@ -3,7 +3,7 @@ using LibHac.Fs; using LibHac.Ncm; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.HLE.FileSystem; using System.IO; using System.Linq; diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs index 21c39967f..7b642bb9d 100644 --- a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs +++ b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs @@ -1,7 +1,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Platform; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using Ryujinx.Common.Helper; using SPB.Graphics; diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs index 81a94d6c4..e788272f6 100644 --- a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs +++ b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs @@ -1,5 +1,5 @@ using OpenTK.Graphics.OpenGL; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; using Ryujinx.Graphics.GAL; diff --git a/src/Ryujinx/UI/Renderer/RendererHost.cs b/src/Ryujinx/UI/Renderer/RendererHost.cs index 7352dbdb5..fd7124f2b 100644 --- a/src/Ryujinx/UI/Renderer/RendererHost.cs +++ b/src/Ryujinx/UI/Renderer/RendererHost.cs @@ -1,7 +1,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Media; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using System; diff --git a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs index 7a63c3391..07aa84c04 100644 --- a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs @@ -5,7 +5,7 @@ using CommunityToolkit.Mvvm.ComponentModel; using Gommon; using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using System; namespace Ryujinx.Ava.UI.ViewModels diff --git a/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs b/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs index 9c37368de..c8d648b99 100644 --- a/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs +++ b/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs @@ -1,4 +1,4 @@ -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; namespace Ryujinx.Ava.UI.ViewModels diff --git a/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs b/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs index 33c75bc62..4bffcb7d3 100644 --- a/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs @@ -1,7 +1,7 @@ using Gommon; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.PlayReport; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.PlayReport; namespace Ryujinx.Ava.UI.ViewModels { diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs b/src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs similarity index 94% rename from src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs rename to src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs index 721a36194..d6c10044d 100644 --- a/src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs @@ -1,10 +1,11 @@ using Gommon; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.UI.Windows; using System.Collections.Generic; using System.Linq; -namespace Ryujinx.Ava.Utilities.Compat +namespace Ryujinx.Ava.UI.ViewModels { public class CompatibilityViewModel : BaseModel { diff --git a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs index b486aa766..e236ac737 100644 --- a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs @@ -1,6 +1,6 @@ using CommunityToolkit.Mvvm.ComponentModel; using Ryujinx.Ava.Common.Models; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System.Linq; namespace Ryujinx.Ava.UI.ViewModels diff --git a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs index a16a06ff5..dc1e928f1 100644 --- a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs @@ -7,7 +7,7 @@ using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; diff --git a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs index 1b0291fb9..0431eab42 100644 --- a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs @@ -10,7 +10,7 @@ using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.Models.Input; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; diff --git a/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs index 521b13859..effd07904 100644 --- a/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs @@ -3,7 +3,7 @@ using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Humanizer; using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using System.Globalization; namespace Ryujinx.Ava.UI.ViewModels.Input diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index 2c42a1a1d..1e7480b11 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -23,8 +23,8 @@ using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.Models.Generic; using Ryujinx.Ava.UI.Renderer; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Helper; diff --git a/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs b/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs index cda7e34cf..081ca0912 100644 --- a/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs @@ -7,7 +7,7 @@ using Gommon; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; using Ryujinx.Common.Utilities; diff --git a/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs index 167b8a857..816e85c98 100644 --- a/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs @@ -1,6 +1,6 @@ using CommunityToolkit.Mvvm.ComponentModel; using Gommon; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; namespace Ryujinx.Ava.UI.ViewModels { diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs index d0a6c6d8a..aa6b34922 100644 --- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs @@ -12,9 +12,9 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models.Input; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.Configuration; -using Ryujinx.Ava.Utilities.Configuration.System; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.Configuration.System; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Multiplayer; using Ryujinx.Common.GraphicsDriver; diff --git a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs index 2b88aceed..7ecfc1c87 100644 --- a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs @@ -6,7 +6,7 @@ using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs b/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs index 560f852db..a48efcbd5 100644 --- a/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs @@ -6,7 +6,7 @@ using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Utilities; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs index 6c2cf6cae..13c2f4c8a 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs @@ -11,9 +11,9 @@ using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Compat; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.UI.Views.Misc; using Ryujinx.Common; using Ryujinx.Common.Helper; using Ryujinx.Common.Utilities; @@ -51,7 +51,7 @@ namespace Ryujinx.Ava.UI.Views.Main UninstallFileTypesMenuItem.Command = Commands.Create(UninstallFileTypes); XciTrimmerMenuItem.Command = Commands.Create(XCITrimmerWindow.Show); AboutWindowMenuItem.Command = Commands.Create(AboutWindow.Show); - CompatibilityListMenuItem.Command = Commands.Create(() => CompatibilityList.Show()); + CompatibilityListMenuItem.Command = Commands.Create(() => CompatibilityListWindow.Show()); UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand; diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs index 5a023910c..f8c4c48a2 100644 --- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs @@ -7,7 +7,7 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs index 02020c78c..dc9dd527c 100644 --- a/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs +++ b/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs @@ -2,15 +2,13 @@ using Avalonia.Input.Platform; using Avalonia.Interactivity; using Avalonia.Layout; -using Avalonia.Styling; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Compat; +using Ryujinx.Ava.Systems.AppLibrary; using System.Linq; using System.Threading.Tasks; @@ -46,21 +44,18 @@ namespace Ryujinx.Ava.UI.Views.Misc if (RyujinxApp.AppLifetime.Windows.TryGetFirst(x => x is ContentDialogOverlayWindow, out Window window)) window.Close(ContentDialogResult.None); - await CompatibilityList.Show((string)playabilityLabel.Tag); + await CompatibilityListWindow.Show((string)playabilityLabel.Tag); } private async void IdString_OnClick(object sender, RoutedEventArgs e) { - if (DataContext is not MainWindowViewModel mwvm) - return; - if (sender is not Button { Content: TextBlock idText }) return; if (!RyujinxApp.IsClipboardAvailable(out IClipboard clipboard)) return; - ApplicationData appData = mwvm.Applications.FirstOrDefault(it => it.IdString == idText.Text); + ApplicationData appData = RyujinxApp.MainWindow.ViewModel.Applications.FirstOrDefault(it => it.IdString == idText.Text); if (appData is null) return; diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs index bb7d62c8f..c1cf7a66b 100644 --- a/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs +++ b/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs @@ -4,7 +4,7 @@ using Avalonia.Interactivity; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System; namespace Ryujinx.Ava.UI.Views.Misc diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs index e393d0836..aa87a8c9a 100644 --- a/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs +++ b/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs @@ -5,8 +5,8 @@ using Avalonia.Interactivity; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Compat; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.UI.Windows; using System; using System.Linq; @@ -36,7 +36,7 @@ namespace Ryujinx.Ava.UI.Views.Misc if (sender is not Button { Content: TextBlock playabilityLabel }) return; - await CompatibilityList.Show((string)playabilityLabel.Tag); + await CompatibilityListWindow.Show((string)playabilityLabel.Tag); } private async void IdString_OnClick(object sender, RoutedEventArgs e) diff --git a/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs b/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs index 017ab9719..ebeaa0603 100644 --- a/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs +++ b/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs @@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using System.Threading.Tasks; namespace Ryujinx.Ava.UI.Views.Misc diff --git a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs index a9767bcca..2cdca2241 100644 --- a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs @@ -2,8 +2,8 @@ using Avalonia.Collections; using LibHac.Tools.FsSystem; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.HOS; using System.Collections.Generic; @@ -38,12 +38,9 @@ namespace Ryujinx.Ava.UI.Windows MinHeight = 650; LoadedCheats = []; - IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks - ? IntegrityCheckLevel.ErrorOnInvalid - : IntegrityCheckLevel.None; Heading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.CheatWindowHeading, titleName, titleId.ToUpper()); - BuildId = ApplicationData.GetBuildId(virtualFileSystem, checkLevel, titlePath); + BuildId = ApplicationData.GetBuildId(virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel, titlePath); InitializeComponent(); diff --git a/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml new file mode 100644 index 000000000..e3347252f --- /dev/null +++ b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs new file mode 100644 index 000000000..8b7954ee0 --- /dev/null +++ b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs @@ -0,0 +1,50 @@ +using Avalonia.Controls; +using Avalonia.Styling; +using FluentAvalonia.UI.Controls; +using FluentAvalonia.UI.Windowing; +using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.UI.Helpers; +using Ryujinx.Ava.UI.ViewModels; +using Ryujinx.Ava.UI.Windows; +using System.Threading.Tasks; + +namespace Ryujinx.Ava.UI.Windows +{ + public partial class CompatibilityListWindow : StyleableAppWindow + { + public static Task Show(string titleId = null) => + ShowAsync(new CompatibilityListWindow + { + DataContext = new CompatibilityViewModel(RyujinxApp.MainWindow.ViewModel.ApplicationLibrary), + SearchBoxFlush = { Text = titleId ?? string.Empty }, + SearchBoxNormal = { Text = titleId ?? string.Empty } + }); + + public CompatibilityListWindow() : base(useCustomTitleBar: true) + { + Title = RyujinxApp.FormatTitle(LocaleKeys.CompatibilityListTitle); + + TitleBar.Height = 37; + + InitializeComponent(); + + RyuLogo.Source = MainWindowViewModel.IconBitmap; + FlushControls.IsVisible = !ConfigurationState.Instance.ShowTitleBar; + NormalControls.IsVisible = ConfigurationState.Instance.ShowTitleBar; + } + + // ReSharper disable once UnusedMember.Local + // its referenced in the axaml but rider keeps yelling at me that its unused so + private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e) + { + if (DataContext is not CompatibilityViewModel cvm) + return; + + if (sender is not TextBox searchBox) + return; + + cvm.Search(searchBox.Text); + } + } +} diff --git a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs index c0897f910..9bd386d57 100644 --- a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs @@ -5,7 +5,7 @@ using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Helper; using System.Threading.Tasks; diff --git a/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs b/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs index a28099257..8e2761bff 100644 --- a/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs @@ -11,7 +11,7 @@ using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.ViewModels.Input; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.HOS.SystemState; diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs index 241a0c0dc..512a93f26 100644 --- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs @@ -18,9 +18,9 @@ using Ryujinx.Ava.UI.Applet; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.Utilities; -using Ryujinx.Ava.Utilities.AppLibrary; -using Ryujinx.Ava.Utilities.Configuration; -using Ryujinx.Ava.Utilities.Configuration.UI; +using Ryujinx.Ava.Systems.AppLibrary; +using Ryujinx.Ava.Systems.Configuration; +using Ryujinx.Ava.Systems.Configuration.UI; using Ryujinx.Common; using Ryujinx.Common.Helper; using Ryujinx.Common.Logging; @@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Windows public readonly double StatusBarHeight; public readonly double MenuBarHeight; - public MainWindow() + public MainWindow() : base(useCustomTitleBar: true) { DataContext = ViewModel = new MainWindowViewModel { @@ -90,9 +90,6 @@ namespace Ryujinx.Ava.UI.Windows ViewModel.Title = RyujinxApp.FormatTitle(); - TitleBar.ExtendsContentIntoTitleBar = !ConfigurationState.Instance.ShowTitleBar; - TitleBar.TitleBarHitTestType = (ConfigurationState.Instance.ShowTitleBar) ? TitleBarHitTestType.Simple : TitleBarHitTestType.Complex; - // NOTE: Height of MenuBar and StatusBar is not usable here, since it would still be 0 at this point. StatusBarHeight = StatusBarView.StatusBar.MinHeight; MenuBarHeight = MenuBar.MinHeight; @@ -273,11 +270,7 @@ namespace Ryujinx.Ava.UI.Windows LibHacHorizonManager.InitializeBcatServer(); LibHacHorizonManager.InitializeSystemClients(); - IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks - ? IntegrityCheckLevel.ErrorOnInvalid - : IntegrityCheckLevel.None; - - ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, checkLevel) + ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel) { DesiredLanguage = ConfigurationState.Instance.System.Language, }; diff --git a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs index cb483b404..e51d1ca4a 100644 --- a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs @@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Helper; using System.Threading.Tasks; using Button = Avalonia.Controls.Button; diff --git a/src/Ryujinx/UI/Windows/StyleableWindow.cs b/src/Ryujinx/UI/Windows/StyleableWindow.cs index 0f3291226..294a36851 100644 --- a/src/Ryujinx/UI/Windows/StyleableWindow.cs +++ b/src/Ryujinx/UI/Windows/StyleableWindow.cs @@ -6,6 +6,7 @@ using Avalonia.Media; using Avalonia.Platform; using FluentAvalonia.UI.Windowing; using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.UI.ViewModels; using System.Threading.Tasks; @@ -21,7 +22,7 @@ namespace Ryujinx.Ava.UI.Windows await appWindow.ShowDialog(owner ?? RyujinxApp.MainWindow); } - protected StyleableAppWindow() + protected StyleableAppWindow(bool useCustomTitleBar = false) { WindowStartupLocation = WindowStartupLocation.CenterOwner; TransparencyLevelHint = [WindowTransparencyLevel.None]; @@ -29,6 +30,12 @@ namespace Ryujinx.Ava.UI.Windows LocaleManager.Instance.LocaleChanged += LocaleChanged; LocaleChanged(); + if (useCustomTitleBar) + { + TitleBar.ExtendsContentIntoTitleBar = !ConfigurationState.Instance.ShowTitleBar; + TitleBar.TitleBarHitTestType = ConfigurationState.Instance.ShowTitleBar ? TitleBarHitTestType.Simple : TitleBarHitTestType.Complex; + } + Icon = MainWindowViewModel.IconBitmap; } diff --git a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs index b7c421c96..1146766b5 100644 --- a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs @@ -5,7 +5,7 @@ using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Models; using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.Common.Helper; using System.Threading.Tasks; diff --git a/src/Ryujinx/Utilities/AppletMetadata.cs b/src/Ryujinx/Utilities/AppletMetadata.cs index 50f01b4c0..3dee3a94d 100644 --- a/src/Ryujinx/Utilities/AppletMetadata.cs +++ b/src/Ryujinx/Utilities/AppletMetadata.cs @@ -2,7 +2,7 @@ using LibHac.Ncm; using LibHac.Ns; using LibHac.Tools.FsSystem.NcaUtils; -using Ryujinx.Ava.Utilities.AppLibrary; +using Ryujinx.Ava.Systems.AppLibrary; using Ryujinx.HLE; using Ryujinx.HLE.FileSystem; diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml b/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml deleted file mode 100644 index ef70a23d1..000000000 --- a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs b/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs deleted file mode 100644 index db9feb36f..000000000 --- a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Styling; -using FluentAvalonia.UI.Controls; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Helpers; -using System.Threading.Tasks; - -namespace Ryujinx.Ava.Utilities.Compat -{ - public partial class CompatibilityList : UserControl - { - public static async Task Show(string titleId = null) - { - ContentDialog contentDialog = new() - { - PrimaryButtonText = string.Empty, - SecondaryButtonText = string.Empty, - CloseButtonText = LocaleManager.Instance[LocaleKeys.SettingsButtonClose], - Content = new CompatibilityList - { - DataContext = new CompatibilityViewModel(RyujinxApp.MainWindow.ViewModel.ApplicationLibrary), - SearchBox = { - Text = titleId ?? "" - } - } - }; - - await ContentDialogHelper.ShowAsync(contentDialog.ApplyStyles()); - } - - public CompatibilityList() - { - InitializeComponent(); - } - - private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e) - { - if (DataContext is not CompatibilityViewModel cvm) - return; - - if (sender is not TextBox searchBox) - return; - - cvm.Search(searchBox.Text); - } - } -} diff --git a/src/Ryujinx/Utilities/Configuration/System/Region.cs b/src/Ryujinx/Utilities/Configuration/System/Region.cs deleted file mode 100644 index ff3352e6a..000000000 --- a/src/Ryujinx/Utilities/Configuration/System/Region.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Ryujinx.Common.Utilities; -using System.Text.Json.Serialization; - -namespace Ryujinx.Ava.Utilities.Configuration.System -{ - [JsonConverter(typeof(TypedStringEnumConverter))] - public enum Region - { - Japan, - USA, - Europe, - Australia, - China, - Korea, - Taiwan, - } -} diff --git a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs index 12dd234d7..5fc9b609a 100644 --- a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs +++ b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs @@ -7,7 +7,7 @@ using LibHac.Ns; using LibHac.Tools.FsSystem; using LibHac.Tools.FsSystem.NcaUtils; using Ryujinx.Ava.Common.Models; -using Ryujinx.Ava.Utilities.Configuration; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; using Ryujinx.Common.Utilities; @@ -81,10 +81,6 @@ namespace Ryujinx.Ava.Utilities { List<(TitleUpdateModel, bool IsSelected)> result = []; - IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks - ? IntegrityCheckLevel.ErrorOnInvalid - : IntegrityCheckLevel.None; - foreach (string path in titleUpdateMetadata.Paths) { if (!File.Exists(path)) @@ -95,7 +91,7 @@ namespace Ryujinx.Ava.Utilities using IFileSystem pfs = PartitionFileSystemUtils.OpenApplicationFileSystem(path, vfs); Dictionary updates = - pfs.GetContentData(ContentMetaType.Patch, vfs, checkLevel); + pfs.GetContentData(ContentMetaType.Patch, vfs, ConfigurationState.Instance.System.IntegrityCheckLevel); if (!updates.TryGetValue(applicationIdBase, out ContentMetaData content)) continue;