diff --git a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs index 6108c35f..59e2fe89 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs @@ -3,12 +3,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Snap.Hutao.Core.Database; -using Snap.Hutao.Core.Setting; -using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity.Database; using System.Diagnostics; -using System.Globalization; namespace Snap.Hutao.Core.DependencyInjection; @@ -48,9 +44,6 @@ internal static class IocConfiguration #endif context.Database.Migrate(); } - - SettingEntry entry = context.Settings.SingleOrAdd(SettingEntry.Culture, CultureInfo.CurrentCulture.Name); - Localization.Initialize(entry.Value!); } return services.AddDbContext(builder => diff --git a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/Activation.cs b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/Activation.cs index 8259b2fd..eefb21ad 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/Activation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/Activation.cs @@ -54,6 +54,11 @@ internal static class Activation /// 是否提升了权限 public static bool GetElevated() { + if (Debugger.IsAttached) + { + return true; + } + using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) { WindowsPrincipal principal = new(identity); diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Setting/Localization.cs b/src/Snap.Hutao/Snap.Hutao/Core/Setting/Localization.cs deleted file mode 100644 index f547013e..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Core/Setting/Localization.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using System.Globalization; -using Windows.Globalization; - -namespace Snap.Hutao.Core.Setting; - -/// -/// 本地化 -/// -internal static class Localization -{ - /// - /// 初始化本地化语言 - /// - /// 语言代码 - public static void Initialize(string culture) - { - CultureInfo cultureInfo = CultureInfo.GetCultureInfo(culture); - CultureInfo.CurrentCulture = cultureInfo; - CultureInfo.CurrentUICulture = cultureInfo; - ApplicationLanguages.PrimaryLanguageOverride = culture; - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Option/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Option/AppOptions.cs index 11349b82..ae98a9cb 100644 --- a/src/Snap.Hutao/Snap.Hutao/Option/AppOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Option/AppOptions.cs @@ -8,6 +8,7 @@ using Snap.Hutao.Core.Database; using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity.Database; using System.Globalization; +using Windows.Globalization; namespace Snap.Hutao.Option; diff --git a/src/Snap.Hutao/Snap.Hutao/Program.cs b/src/Snap.Hutao/Snap.Hutao/Program.cs index f6d2bf8d..da799c5c 100644 --- a/src/Snap.Hutao/Snap.Hutao/Program.cs +++ b/src/Snap.Hutao/Snap.Hutao/Program.cs @@ -4,7 +4,11 @@ using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; +using Snap.Hutao.Core.Setting; +using Snap.Hutao.Option; +using System.Globalization; using System.Runtime.InteropServices; +using Windows.Globalization; using WinRT; namespace Snap.Hutao; @@ -27,8 +31,11 @@ public static partial class Program ComWrappersSupport.InitializeComWrappers(); // by adding the using statement, we can dispose the injected services when we closing - using (InitializeDependencyInjection()) + using (ServiceProvider serviceProvider = InitializeDependencyInjection()) { + AppOptions options = serviceProvider.GetRequiredService(); + InitializeCulture(options.CurrentCulture); + // In a Desktop app this runs a message pump internally, // and does not return until the application shuts down. Application.Start(InitializeApp); @@ -42,10 +49,13 @@ public static partial class Program _ = Ioc.Default.GetRequiredService(); } - /// - /// 初始化依赖注入 - /// - /// The ServiceProvider, so that we can dispose it. + private static void InitializeCulture(CultureInfo cultureInfo) + { + CultureInfo.CurrentCulture = cultureInfo; + CultureInfo.CurrentUICulture = cultureInfo; + ApplicationLanguages.PrimaryLanguageOverride = cultureInfo.Name; + } + private static ServiceProvider InitializeDependencyInjection() { ServiceProvider services = new ServiceCollection() diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs index 0a345d05..b9700b6c 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs @@ -323,8 +323,8 @@ internal sealed class GameService : IGameService // https://docs.unity.cn/cn/current/Manual/PlayerCommandLineArguments.html string commandLine = new CommandLineBuilder() .AppendIf("-popupwindow", options.IsBorderless) - .Append("-screen-fullscreen", options.IsFullScreen ? 1 : 0) .AppendIf("-window-mode", options.IsExclusive, "exclusive") + .Append("-screen-fullscreen", options.IsFullScreen ? 1 : 0) .Append("-screen-width", options.ScreenWidth) .Append("-screen-height", options.ScreenHeight) .Append("-monitor", options.Monitor.Value) diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchOptions.cs index 938f4f07..2ce84853 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchOptions.cs @@ -9,7 +9,6 @@ using Snap.Hutao.Core.Database; using Snap.Hutao.Model; using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity.Database; -using Snap.Hutao.Win32; using Windows.Graphics; using Windows.Win32.Foundation; using Windows.Win32.Graphics.Gdi; @@ -345,11 +344,14 @@ internal sealed class LaunchOptions : ObservableObject, IOptions { if (SetProperty(ref monitor, value)) { - using (IServiceScope scope = serviceScopeFactory.CreateScope()) + if (monitor != null) { - AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService(); - appDbContext.Settings.ExecuteDeleteWhere(e => e.Key == SettingEntry.LaunchMonitor); - appDbContext.Settings.AddAndSave(new(SettingEntry.LaunchMonitor, value.Value.ToString())); + using (IServiceScope scope = serviceScopeFactory.CreateScope()) + { + AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService(); + appDbContext.Settings.ExecuteDeleteWhere(e => e.Key == SettingEntry.LaunchMonitor); + appDbContext.Settings.AddAndSave(new(SettingEntry.LaunchMonitor, value.Value.ToString())); + } } } } diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/PackageConverter.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/PackageConverter.cs index 8d03d294..70fba2f1 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/PackageConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/PackageConverter.cs @@ -307,6 +307,7 @@ internal sealed class PackageConverter try { await CopyToWithProgressAsync(webStream, fileStream, info.Target, totalBytes, progress).ConfigureAwait(false); + fileStream.Seek(0, SeekOrigin.Begin); string remoteMd5 = await Digest.GetStreamMD5Async(fileStream).ConfigureAwait(false); if (info.Md5 == remoteMd5.ToLowerInvariant()) { diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/LaunchGamePackageConvertDialog.xaml b/src/Snap.Hutao/Snap.Hutao/View/Dialog/LaunchGamePackageConvertDialog.xaml index d6c113ee..c8bca679 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Dialog/LaunchGamePackageConvertDialog.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/LaunchGamePackageConvertDialog.xaml @@ -16,14 +16,14 @@ - +