fix game resource convert

This commit is contained in:
DismissedLight
2023-03-06 11:29:53 +08:00
parent b1a03662d9
commit 128b985609
9 changed files with 35 additions and 48 deletions

View File

@@ -3,12 +3,8 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; 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 Snap.Hutao.Model.Entity.Database;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
namespace Snap.Hutao.Core.DependencyInjection; namespace Snap.Hutao.Core.DependencyInjection;
@@ -48,9 +44,6 @@ internal static class IocConfiguration
#endif #endif
context.Database.Migrate(); context.Database.Migrate();
} }
SettingEntry entry = context.Settings.SingleOrAdd(SettingEntry.Culture, CultureInfo.CurrentCulture.Name);
Localization.Initialize(entry.Value!);
} }
return services.AddDbContext<AppDbContext>(builder => return services.AddDbContext<AppDbContext>(builder =>

View File

@@ -54,6 +54,11 @@ internal static class Activation
/// <returns>是否提升了权限</returns> /// <returns>是否提升了权限</returns>
public static bool GetElevated() public static bool GetElevated()
{ {
if (Debugger.IsAttached)
{
return true;
}
using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{ {
WindowsPrincipal principal = new(identity); WindowsPrincipal principal = new(identity);

View File

@@ -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;
/// <summary>
/// 本地化
/// </summary>
internal static class Localization
{
/// <summary>
/// 初始化本地化语言
/// </summary>
/// <param name="culture">语言代码</param>
public static void Initialize(string culture)
{
CultureInfo cultureInfo = CultureInfo.GetCultureInfo(culture);
CultureInfo.CurrentCulture = cultureInfo;
CultureInfo.CurrentUICulture = cultureInfo;
ApplicationLanguages.PrimaryLanguageOverride = culture;
}
}

View File

@@ -8,6 +8,7 @@ using Snap.Hutao.Core.Database;
using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Database; using Snap.Hutao.Model.Entity.Database;
using System.Globalization; using System.Globalization;
using Windows.Globalization;
namespace Snap.Hutao.Option; namespace Snap.Hutao.Option;

View File

@@ -4,7 +4,11 @@
using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.UI.Xaml; using Microsoft.UI.Xaml;
using Snap.Hutao.Core.Setting;
using Snap.Hutao.Option;
using System.Globalization;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Windows.Globalization;
using WinRT; using WinRT;
namespace Snap.Hutao; namespace Snap.Hutao;
@@ -27,8 +31,11 @@ public static partial class Program
ComWrappersSupport.InitializeComWrappers(); ComWrappersSupport.InitializeComWrappers();
// by adding the using statement, we can dispose the injected services when we closing // by adding the using statement, we can dispose the injected services when we closing
using (InitializeDependencyInjection()) using (ServiceProvider serviceProvider = InitializeDependencyInjection())
{ {
AppOptions options = serviceProvider.GetRequiredService<AppOptions>();
InitializeCulture(options.CurrentCulture);
// In a Desktop app this runs a message pump internally, // In a Desktop app this runs a message pump internally,
// and does not return until the application shuts down. // and does not return until the application shuts down.
Application.Start(InitializeApp); Application.Start(InitializeApp);
@@ -42,10 +49,13 @@ public static partial class Program
_ = Ioc.Default.GetRequiredService<App>(); _ = Ioc.Default.GetRequiredService<App>();
} }
/// <summary> private static void InitializeCulture(CultureInfo cultureInfo)
/// 初始化依赖注入 {
/// </summary> CultureInfo.CurrentCulture = cultureInfo;
/// <returns>The ServiceProvider, so that we can dispose it.</returns> CultureInfo.CurrentUICulture = cultureInfo;
ApplicationLanguages.PrimaryLanguageOverride = cultureInfo.Name;
}
private static ServiceProvider InitializeDependencyInjection() private static ServiceProvider InitializeDependencyInjection()
{ {
ServiceProvider services = new ServiceCollection() ServiceProvider services = new ServiceCollection()

View File

@@ -323,8 +323,8 @@ internal sealed class GameService : IGameService
// https://docs.unity.cn/cn/current/Manual/PlayerCommandLineArguments.html // https://docs.unity.cn/cn/current/Manual/PlayerCommandLineArguments.html
string commandLine = new CommandLineBuilder() string commandLine = new CommandLineBuilder()
.AppendIf("-popupwindow", options.IsBorderless) .AppendIf("-popupwindow", options.IsBorderless)
.Append("-screen-fullscreen", options.IsFullScreen ? 1 : 0)
.AppendIf("-window-mode", options.IsExclusive, "exclusive") .AppendIf("-window-mode", options.IsExclusive, "exclusive")
.Append("-screen-fullscreen", options.IsFullScreen ? 1 : 0)
.Append("-screen-width", options.ScreenWidth) .Append("-screen-width", options.ScreenWidth)
.Append("-screen-height", options.ScreenHeight) .Append("-screen-height", options.ScreenHeight)
.Append("-monitor", options.Monitor.Value) .Append("-monitor", options.Monitor.Value)

View File

@@ -9,7 +9,6 @@ using Snap.Hutao.Core.Database;
using Snap.Hutao.Model; using Snap.Hutao.Model;
using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Database; using Snap.Hutao.Model.Entity.Database;
using Snap.Hutao.Win32;
using Windows.Graphics; using Windows.Graphics;
using Windows.Win32.Foundation; using Windows.Win32.Foundation;
using Windows.Win32.Graphics.Gdi; using Windows.Win32.Graphics.Gdi;
@@ -345,11 +344,14 @@ internal sealed class LaunchOptions : ObservableObject, IOptions<LaunchOptions>
{ {
if (SetProperty(ref monitor, value)) if (SetProperty(ref monitor, value))
{ {
using (IServiceScope scope = serviceScopeFactory.CreateScope()) if (monitor != null)
{ {
AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>(); using (IServiceScope scope = serviceScopeFactory.CreateScope())
appDbContext.Settings.ExecuteDeleteWhere(e => e.Key == SettingEntry.LaunchMonitor); {
appDbContext.Settings.AddAndSave(new(SettingEntry.LaunchMonitor, value.Value.ToString())); AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
appDbContext.Settings.ExecuteDeleteWhere(e => e.Key == SettingEntry.LaunchMonitor);
appDbContext.Settings.AddAndSave(new(SettingEntry.LaunchMonitor, value.Value.ToString()));
}
} }
} }
} }

View File

@@ -307,6 +307,7 @@ internal sealed class PackageConverter
try try
{ {
await CopyToWithProgressAsync(webStream, fileStream, info.Target, totalBytes, progress).ConfigureAwait(false); await CopyToWithProgressAsync(webStream, fileStream, info.Target, totalBytes, progress).ConfigureAwait(false);
fileStream.Seek(0, SeekOrigin.Begin);
string remoteMd5 = await Digest.GetStreamMD5Async(fileStream).ConfigureAwait(false); string remoteMd5 = await Digest.GetStreamMD5Async(fileStream).ConfigureAwait(false);
if (info.Md5 == remoteMd5.ToLowerInvariant()) if (info.Md5 == remoteMd5.ToLowerInvariant())
{ {

View File

@@ -16,14 +16,14 @@
<StackPanel> <StackPanel>
<TextBlock Text="{shcm:ResourceString Name=ViewDialogLaunchGamePackageConvertHint}"/> <TextBlock Text="{shcm:ResourceString Name=ViewDialogLaunchGamePackageConvertHint}"/>
<TextBlock
MinWidth="360"
Margin="0,16,0,8"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding State.Description}"/>
<ProgressBar <ProgressBar
Margin="0,16,0,4"
IsIndeterminate="{Binding State.IsIndeterminate}" IsIndeterminate="{Binding State.IsIndeterminate}"
Maximum="1" Maximum="1"
Value="{Binding State.Percent}"/> Value="{Binding State.Percent}"/>
<TextBlock
MinWidth="360"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding State.Description}"/>
</StackPanel> </StackPanel>
</ContentDialog> </ContentDialog>