diff --git a/CollapseLauncher.slnx b/CollapseLauncher.slnx index fcb1edfc72..b9c1c02b68 100644 --- a/CollapseLauncher.slnx +++ b/CollapseLauncher.slnx @@ -50,6 +50,9 @@ + + + @@ -66,6 +69,9 @@ + + + diff --git a/CollapseLauncher/App.xaml b/CollapseLauncher/App.xaml index 802e171716..71c8a5ea4d 100644 --- a/CollapseLauncher/App.xaml +++ b/CollapseLauncher/App.xaml @@ -1,7 +1,7 @@  + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> diff --git a/CollapseLauncher/Classes/CachesManagement/Honkai/Check.cs b/CollapseLauncher/Classes/CachesManagement/Honkai/Check.cs index 92e9568542..6a883cd9cc 100644 --- a/CollapseLauncher/Classes/CachesManagement/Honkai/Check.cs +++ b/CollapseLauncher/Classes/CachesManagement/Honkai/Check.cs @@ -1,4 +1,5 @@ -using CollapseLauncher.Helper.StreamUtility; +using CollapseLauncher.Helper; +using CollapseLauncher.Helper.StreamUtility; using CollapseLauncher.Interfaces; using Hi3Helper; using System; @@ -9,7 +10,6 @@ using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; -using static Hi3Helper.Locale; using static Hi3Helper.Logger; // ReSharper disable CommentTypo @@ -123,8 +123,8 @@ private async ValueTask CheckAsset(CacheAsset asset, List returnAsse { // Increment the count and update the status Interlocked.Add(ref ProgressAllCountCurrent, 1); - Status.ActivityStatus = string.Format(Lang!._CachesPage!.CachesStatusChecking!, asset!.DataType, asset.N); - Status.ActivityAll = string.Format(Lang._CachesPage.CachesTotalStatusChecking!, ProgressAllCountCurrent, ProgressAllCountTotal); + Status.ActivityStatus = string.Format(Locale.Current.Lang?._CachesPage?.CachesStatusChecking ?? "", asset!.DataType, asset.N); + Status.ActivityAll = string.Format(Locale.Current.Lang?._CachesPage?.CachesTotalStatusChecking ?? "", ProgressAllCountCurrent, ProgressAllCountTotal); // Assign the file info. FileInfo fileInfo = new FileInfo(asset.ConcatPath).EnsureNoReadOnly(out bool isExist); diff --git a/CollapseLauncher/Classes/CachesManagement/Honkai/Fetch.cs b/CollapseLauncher/Classes/CachesManagement/Honkai/Fetch.cs index b97b435d69..7647658109 100644 --- a/CollapseLauncher/Classes/CachesManagement/Honkai/Fetch.cs +++ b/CollapseLauncher/Classes/CachesManagement/Honkai/Fetch.cs @@ -15,7 +15,6 @@ using System.Threading; using System.Threading.Tasks; using static Hi3Helper.Data.ConverterTool; -using static Hi3Helper.Locale; using static Hi3Helper.Logger; // ReSharper disable SwitchStatementHandlesSomeKnownEnumValuesWithDefault // ReSharper disable CommentTypo @@ -127,7 +126,7 @@ private async Task BuildGameRepoURL(HttpClient client, CancellationToken token) private async Task<(int, long)> FetchByType(CacheAssetType type, HttpClient client, List assetIndex, CancellationToken token) { // Set total activity string as "Fetching Caches Type: " - Status.ActivityStatus = string.Format(Lang!._CachesPage!.CachesStatusFetchingType!, type); + Status.ActivityStatus = string.Format(Locale.Current.Lang?._CachesPage?.CachesStatusFetchingType ?? "", type); Status.IsProgressAllIndetermined = true; Status.IsIncludePerFileIndicator = false; UpdateStatus(); @@ -282,7 +281,7 @@ await Parallel.ForEachAsync(EnumerateCacheTextAsset(type, dataTextAsset.GetStrin if (content.DLM == 2) { // Update the status - Status.ActivityStatus = string.Format(Lang._CachesPage.Status2, type, content.N); + Status.ActivityStatus = string.Format(Locale.Current.Lang?._CachesPage?.Status2 ?? "", type, content.N); Status.IsProgressAllIndetermined = true; Status.IsProgressPerFileIndetermined = true; UpdateStatus(); diff --git a/CollapseLauncher/Classes/CachesManagement/Honkai/HonkaiCache.cs b/CollapseLauncher/Classes/CachesManagement/Honkai/HonkaiCache.cs index 6b459e6796..ee8a3eb711 100644 --- a/CollapseLauncher/Classes/CachesManagement/Honkai/HonkaiCache.cs +++ b/CollapseLauncher/Classes/CachesManagement/Honkai/HonkaiCache.cs @@ -1,4 +1,5 @@ using CollapseLauncher.Extension; +using CollapseLauncher.Helper; using CollapseLauncher.Interfaces; using Hi3Helper.Data; using Hi3Helper.EncTool.Parser.KianaDispatch; @@ -6,7 +7,6 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using static Hi3Helper.Locale; namespace CollapseLauncher { @@ -72,8 +72,8 @@ private async Task CheckRoutine() // either way, returns false. return SummarizeStatusAndProgress( UpdateAssetIndex, - string.Format(Lang!._CachesPage!.CachesStatusNeedUpdate!, ProgressAllCountFound, ConverterTool.SummarizeSizeSimple(ProgressAllSizeFound)), - Lang._CachesPage.CachesStatusUpToDate); + string.Format(Locale.Current.Lang?._CachesPage?.CachesStatusNeedUpdate ?? "", ProgressAllCountFound, ConverterTool.SummarizeSizeSimple(ProgressAllSizeFound)), + Locale.Current.Lang?._CachesPage?.CachesStatusUpToDate ?? ""); } public async Task StartUpdateRoutine(bool showInteractivePrompt = false) @@ -95,9 +95,9 @@ private async Task UpdateRoutine() ResetStatusAndProgress(); // Set as completed - Status.IsCompleted = true; - Status.IsCanceled = false; - Status.ActivityStatus = Lang!._CachesPage!.CachesStatusUpToDate; + Status.IsCompleted = true; + Status.IsCanceled = false; + Status.ActivityStatus = Locale.Current.Lang?._CachesPage?.CachesStatusUpToDate; // Update status and progress UpdateAll(); diff --git a/CollapseLauncher/Classes/CachesManagement/Honkai/Update.cs b/CollapseLauncher/Classes/CachesManagement/Honkai/Update.cs index 9a13041d16..12b59a9adb 100644 --- a/CollapseLauncher/Classes/CachesManagement/Honkai/Update.cs +++ b/CollapseLauncher/Classes/CachesManagement/Honkai/Update.cs @@ -12,7 +12,6 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; -using static Hi3Helper.Locale; using static Hi3Helper.Logger; // ReSharper disable CommentTypo // ReSharper disable GrammarMistakeInComment @@ -123,7 +122,7 @@ private async Task UpdateCacheAsset((CacheAsset AssetIndex, IAssetProperty Asset { // Increment total count and update the status ProgressAllCountCurrent++; - Status.ActivityStatus = string.Format(Lang!._Misc!.Downloading + " {0}: {1}", asset!.AssetIndex.DataType, asset.AssetIndex.N); + Status.ActivityStatus = string.Format(Locale.Current.Lang?._Misc?.Downloading + " {0}: {1}", asset!.AssetIndex.DataType, asset.AssetIndex.N); UpdateAll(); FileInfo fileInfo = new FileInfo(asset.AssetIndex.ConcatPath!) diff --git a/CollapseLauncher/Classes/DiscordPresence/DiscordPresenceManager.cs b/CollapseLauncher/Classes/DiscordPresence/DiscordPresenceManager.cs index ee7b54b1ad..5bbaf94010 100644 --- a/CollapseLauncher/Classes/DiscordPresence/DiscordPresenceManager.cs +++ b/CollapseLauncher/Classes/DiscordPresence/DiscordPresenceManager.cs @@ -1,4 +1,5 @@ -using CollapseLauncher.Helper.Metadata; +using CollapseLauncher.Helper; +using CollapseLauncher.Helper.Metadata; using CollapseLauncher.Helper.Update; using CollapseLauncher.Plugins; using DiscordRPC; @@ -8,7 +9,6 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Threading.Tasks.Dataflow; -using static Hi3Helper.Locale; using static Hi3Helper.Shared.Region.LauncherConfig; // ReSharper disable PartialTypeWithSinglePart // ReSharper disable StringLiteralTypo @@ -186,8 +186,8 @@ public void SetupPresence() { if (!IsRpcEnabled) return; - var gameCategory = GetAppConfigValue("GameCategory").ToString(); - var isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool(); + string? gameCategory = GetAppConfigValue("GameCategory").ToString(); + bool isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool(); if (isGameStatusEnabled) { @@ -248,33 +248,33 @@ public void SetActivity(ActivityType activity, DateTime? activityOffset = null) case ActivityType.Play: { bool isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool(); - BuildActivityGameStatus(isGameStatusEnabled ? Lang._Misc.DiscordRP_InGame : Lang._Misc.DiscordRP_Play, + BuildActivityGameStatus((isGameStatusEnabled ? Locale.Current.Lang?._Misc?.DiscordRP_InGame : Locale.Current.Lang?._Misc?.DiscordRP_Play) ?? "", isGameStatusEnabled, activityOffset); break; } case ActivityType.Update: { bool isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool(); - BuildActivityGameStatus(Lang._Misc.DiscordRP_Update, isGameStatusEnabled); + BuildActivityGameStatus(Locale.Current.Lang?._Misc?.DiscordRP_Update ?? "", isGameStatusEnabled); break; } case ActivityType.Repair: - BuildActivityAppStatus(Lang._Misc.DiscordRP_Repair); + BuildActivityAppStatus(Locale.Current.Lang?._Misc?.DiscordRP_Repair ?? ""); break; case ActivityType.Cache: - BuildActivityAppStatus(Lang._Misc.DiscordRP_Cache); + BuildActivityAppStatus(Locale.Current.Lang?._Misc?.DiscordRP_Cache ?? ""); break; case ActivityType.GameSettings: - BuildActivityAppStatus(Lang._Misc.DiscordRP_GameSettings); + BuildActivityAppStatus(Locale.Current.Lang?._Misc?.DiscordRP_GameSettings ?? ""); break; case ActivityType.AppSettings: - BuildActivityAppStatus(Lang._Misc.DiscordRP_AppSettings); + BuildActivityAppStatus(Locale.Current.Lang?._Misc?.DiscordRP_AppSettings ?? ""); break; case ActivityType.Idle: _lastPlayTime = null; if (_cachedIsIdleEnabled) { - BuildActivityAppStatus(Lang._Misc.DiscordRP_Idle); + BuildActivityAppStatus(Locale.Current.Lang?._Misc?.DiscordRP_Idle ?? ""); } else { @@ -285,7 +285,7 @@ public void SetActivity(ActivityType activity, DateTime? activityOffset = null) default: _presence = new RichPresence { - Details = Lang._Misc.DiscordRP_Default, + Details = Locale.Current.Lang?._Misc?.DiscordRP_Default, Assets = new Assets { LargeImageKey = "launcher-logo-new", @@ -302,16 +302,14 @@ public void SetActivity(ActivityType activity, DateTime? activityOffset = null) private void BuildActivityGameStatus(string activityName, bool isGameStatusEnabled, DateTime? activityOffset = null) { - var curGameName = LauncherMetadataHelper.CurrentMetadataConfigGameName; - var curGameRegion = LauncherMetadataHelper.CurrentMetadataConfigGameRegion; + string? curGameName = LauncherMetadataHelper.CurrentMetadataConfigGameName; + string? curGameRegion = LauncherMetadataHelper.CurrentMetadataConfigGameRegion; if (string.IsNullOrEmpty(curGameName) || string.IsNullOrEmpty(curGameRegion)) return; - var curGameNameTranslate = - InnerLauncherConfig.GetGameTitleRegionTranslationString(curGameName, Lang._GameClientTitles); - var curGameRegionTranslate = - InnerLauncherConfig.GetGameTitleRegionTranslationString(curGameRegion, Lang._GameClientRegions); + string? curGameNameTranslate = LauncherMetadataHelper.GetGameTitleTranslation(curGameName); + string? curGameRegionTranslate = LauncherMetadataHelper.GetGameRegionTranslation(curGameRegion); if (TryBuildActivityGameStatusFromPlugin(activityName, curGameNameTranslate, @@ -326,7 +324,7 @@ private void BuildActivityGameStatus(string activityName, bool isGameStatusEnabl _presence = new RichPresence { Details = $"{activityName} {(!isGameStatusEnabled ? curGameNameTranslate : null)}", - State = $"{Lang._Misc.DiscordRP_Region} {curGameRegionTranslate}", + State = $"{Locale.Current.Lang?._Misc?.DiscordRP_Region} {curGameRegionTranslate}", Assets = new Assets { LargeImageKey = $"game-{LauncherMetadataHelper.CurrentMetadataConfig?.GameType.ToString().ToLower()}-logo", @@ -367,7 +365,7 @@ is not PluginPresetConfigWrapper asPluginPresetConfig || presence = new RichPresence { Details = $"{activityName} {(!isGameStatusEnabled ? translatedGameName : null)}", - State = $"{Lang._Misc.DiscordRP_Region} {translatedRegionName}", + State = $"{Locale.Current.Lang?._Misc?.DiscordRP_Region} {translatedRegionName}", Assets = new Assets { LargeImageKey = largeIconUrl ?? CollapseLogoExt, @@ -395,16 +393,14 @@ private DateTime GetCachedStartPlayTime(DateTime? activityOffset) private void BuildActivityAppStatus(string activityName) { - var curGameName = LauncherMetadataHelper.CurrentMetadataConfigGameName; - var curGameRegion = LauncherMetadataHelper.CurrentMetadataConfigGameRegion; + string? curGameName = LauncherMetadataHelper.CurrentMetadataConfigGameName; + string? curGameRegion = LauncherMetadataHelper.CurrentMetadataConfigGameRegion; if (string.IsNullOrEmpty(curGameName) || string.IsNullOrEmpty(curGameRegion)) return; - var curGameNameTranslate = - InnerLauncherConfig.GetGameTitleRegionTranslationString(curGameName, Lang._GameClientTitles); - var curGameRegionTranslate = - InnerLauncherConfig.GetGameTitleRegionTranslationString(curGameRegion, Lang._GameClientRegions); + string? curGameNameTranslate = LauncherMetadataHelper.GetGameTitleTranslation(curGameName); + string? curGameRegionTranslate = LauncherMetadataHelper.GetGameRegionTranslation(curGameRegion); if (TryBuildActivityAppStatusFromPlugin(activityName, curGameNameTranslate, @@ -417,7 +413,7 @@ private void BuildActivityAppStatus(string activityName) _presence = new RichPresence { Details = activityName, - State = $"{Lang._Misc.DiscordRP_Region} {curGameRegionTranslate}", + State = $"{Locale.Current.Lang?._Misc?.DiscordRP_Region} {curGameRegionTranslate}", Assets = new Assets { LargeImageKey = $"game-{LauncherMetadataHelper.CurrentMetadataConfig?.GameType.ToString().ToLower()}-logo", @@ -453,7 +449,7 @@ is not PluginPresetConfigWrapper asPluginPresetConfig || presence = new RichPresence { Details = activityName, - State = $"{Lang._Misc.DiscordRP_Region} {translatedRegionName}", + State = $"{Locale.Current.Lang?._Misc?.DiscordRP_Region} {translatedRegionName}", Assets = new Assets { LargeImageKey = largeIconUrl ?? CollapseLogoExt, diff --git a/CollapseLauncher/Classes/EventsManagement/BackgroundActivityManager.cs b/CollapseLauncher/Classes/EventsManagement/BackgroundActivityManager.cs index 0b1c3b8055..03406d6aca 100644 --- a/CollapseLauncher/Classes/EventsManagement/BackgroundActivityManager.cs +++ b/CollapseLauncher/Classes/EventsManagement/BackgroundActivityManager.cs @@ -6,7 +6,6 @@ using CollapseLauncher.Statics; using Hi3Helper; using Hi3Helper.Data; -using Hi3Helper.Shared.Region; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media; @@ -14,7 +13,6 @@ using System; using System.Collections.Generic; using System.Numerics; -using static Hi3Helper.Locale; // ReSharper disable StringLiteralTypo // ReSharper disable ClassNeverInstantiated.Global #pragma warning disable IDE0130 @@ -125,34 +123,33 @@ private static void AttachEventToNotification(int hashID, IBackgroundActivity ac TextBlock progressLeftTitle = progressStatusGrid.AddElementToGridRowColumn(new TextBlock { Style = UIElementExtensions.GetApplicationResource