From 58643a60b5118747354130ce9d1087dbd5b89bed Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Sun, 15 Oct 2023 16:14:22 +0800 Subject: [PATCH] fix bugs --- .../Snap.Hutao.Win32/NativeMethods.json | 3 +-- .../Extension/ContentDialogHideToken.cs | 2 +- .../AvatarInfo/Factory/SummaryHelper.cs | 14 +++++++++++--- .../ViewModel/GachaLog/GachaLogViewModel.cs | 19 ++++++++++++++++++- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.json b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.json index 1dfaaafb..bcd1d020 100644 --- a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.json +++ b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.json @@ -1,6 +1,5 @@ { "$schema": "https://raw.githubusercontent.com/microsoft/CsWin32/main/src/Microsoft.Windows.CsWin32/settings.schema.json", "allowMarshaling": true, - "useSafeHandles": false, - "emitSingleFile": true + "useSafeHandles": false } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogHideToken.cs b/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogHideToken.cs index 0e938e27..c0178f3f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogHideToken.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogHideToken.cs @@ -10,8 +10,8 @@ internal struct ContentDialogHideToken : IDisposable, IAsyncDisposable private readonly ContentDialog contentDialog; private readonly ITaskContext taskContext; - private bool disposed = false; private bool disposing = false; + private bool disposed = false; public ContentDialogHideToken(ContentDialog contentDialog, ITaskContext taskContext) { diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryHelper.cs b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryHelper.cs index b8d79982..0c5ab37e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryHelper.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryHelper.cs @@ -105,8 +105,12 @@ internal static class SummaryHelper /// 分数 public static float GetPercentSubAffixScore(in ReliquarySubAffixId appendId) { - // 圣遗物相同类型副词条强化档位一共为 4 档 - // 恰好为 70% 80% 90% 100% + // 圣遗物相同类型副词条强化档位一共为 4/3/2 档 + // 五星 为 70% 80% 90% 100% + // 四星 为 70% 80% 90% 100% + // 三星 为 70% 80% 90% 100% + // 二星 为 70% 85% 100% + // 二星 为 80% 100% // 通过计算与最大属性的 Id 差来决定当前副词条的强化档位 uint maxId = GetAffixMaxId(appendId); uint delta = maxId - appendId; @@ -119,7 +123,11 @@ internal static class SummaryHelper (5 or 4 or 3, 3) => 70F, (2, 0) => 100F, - (2, 1) => 80F, + (2, 1) => 85F, + (2, 2) => 70F, + + (1, 0) => 100F, + (1, 1) => 80F, _ => throw Must.NeverHappen($"Unexpected AppendId: {appendId.Value} Delta: {delta}"), }; diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs index 03a39b7c..997e29fe 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs @@ -14,6 +14,7 @@ using Snap.Hutao.Service.GachaLog.QueryProvider; using Snap.Hutao.Service.Notification; using Snap.Hutao.View.Dialog; using System.Collections.ObjectModel; +using System.Runtime.InteropServices; using Windows.Storage.Pickers; namespace Snap.Hutao.ViewModel.GachaLog; @@ -144,7 +145,23 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel RefreshStrategy strategy = IsAggressiveRefresh ? RefreshStrategy.AggressiveMerge : RefreshStrategy.LazyMerge; GachaLogRefreshProgressDialog dialog = await contentDialogFactory.CreateInstanceAsync().ConfigureAwait(false); - ContentDialogHideToken hideToken = await dialog.BlockAsync(taskContext).ConfigureAwait(false); + + ContentDialogHideToken hideToken; + try + { + hideToken = await dialog.BlockAsync(taskContext).ConfigureAwait(false); + } + catch (COMException ex) + { + if (ex.HResult == unchecked((int)0x80000019)) + { + infoBarService.Error(ex); + return; + } + + throw; + } + IProgress progress = taskContext.CreateProgressForMainThread(dialog.OnReport); bool authkeyValid;