From 7c923aaa5e3bc35d05afee4d90c41a989a32b202 Mon Sep 17 00:00:00 2001 From: qhy040404 Date: Tue, 16 Apr 2024 12:38:37 +0800 Subject: [PATCH 1/4] impl #1355 --- .../Model/Entity/SettingEntry.Constant.cs | 1 + .../Snap.Hutao/Resource/Localization/SH.resx | 6 ++ .../Snap.Hutao/Service/AppOptions.cs | 7 +++ .../Factory/GachaStatisticsFactory.cs | 56 ++++++++++++++++++- .../Snap.Hutao/View/Page/GachaLogPage.xaml | 29 ++++++---- .../Snap.Hutao/View/Page/SettingPage.xaml | 9 +++ 6 files changed, 95 insertions(+), 13 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs index 1263d84f..66d3fa06 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs @@ -19,6 +19,7 @@ internal sealed partial class SettingEntry public const string AnnouncementRegion = "AnnouncementRegion"; public const string IsEmptyHistoryWishVisible = "IsEmptyHistoryWishVisible"; + public const string IsNeverHeldStatisticsItemVisible = "IsNeverHeldStatisticsItemVisible"; public const string GeetestCustomCompositeUrl = "GeetestCustomCompositeUrl"; diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 34f52421..3246063b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2636,6 +2636,12 @@ 快捷键 + + 在祈愿记录页面显示或隐藏未持有过的角色或武器 + + + 未持有过的角色或武器 + 前往官网 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs index b09b066b..a8538a73 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs @@ -15,6 +15,7 @@ namespace Snap.Hutao.Service; [Injection(InjectAs.Singleton)] internal sealed partial class AppOptions : DbStoreOptions { + private bool? isNeverHeldStatisticsItemVisible; private bool? isEmptyHistoryWishVisible; private BackdropType? backdropType; private ElementTheme? elementTheme; @@ -28,6 +29,12 @@ internal sealed partial class AppOptions : DbStoreOptions set => SetOption(ref isEmptyHistoryWishVisible, SettingEntry.IsEmptyHistoryWishVisible, value); } + public bool IsNeverHeldStatisticsItemVisible + { + get => GetOption(ref isNeverHeldStatisticsItemVisible, SettingEntry.IsNeverHeldStatisticsItemVisible); + set => SetOption(ref isNeverHeldStatisticsItemVisible, SettingEntry.IsNeverHeldStatisticsItemVisible, value); + } + public List> BackdropTypes { get; } = CollectionsNameValue.FromEnum(type => type >= 0); public BackdropType BackdropType diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs index 035fb8bd..69e2c5fc 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs @@ -3,6 +3,7 @@ using Snap.Hutao.Core.ExceptionService; using Snap.Hutao.Model.Intrinsic; +using Snap.Hutao.Model.Metadata; using Snap.Hutao.Model.Metadata.Avatar; using Snap.Hutao.Model.Metadata.Weapon; using Snap.Hutao.Service.Metadata; @@ -10,6 +11,7 @@ using Snap.Hutao.Service.Metadata.ContextAbstraction; using Snap.Hutao.ViewModel.GachaLog; using Snap.Hutao.Web.Hoyolab.Hk4e.Event.GachaInfo; using Snap.Hutao.Web.Hutao.GachaLog; +using System.Collections.Frozen; using System.Runtime.InteropServices; namespace Snap.Hutao.Service.GachaLog.Factory; @@ -22,6 +24,16 @@ namespace Snap.Hutao.Service.GachaLog.Factory; [Injection(InjectAs.Scoped, typeof(IGachaStatisticsFactory))] internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory { + private static readonly FrozenSet BlueStandardWeaponIdsSet = FrozenSet.ToFrozenSet( + [ + 11301U, 11302U, 11306U, 12301U, 12302U, 12305U, 13303U, 14301U, 14302U, 14304U, 15301U, 15302U, 15304U + ]); + + private static readonly FrozenSet PurpleStandardWeaponIdsSet = FrozenSet.ToFrozenSet( + [ + 11401U, 11402U, 11403U, 11405U, 12401U, 12402U, 12403U, 12405U, 13401U, 13407U, 14401U, 14402U, 14403U, 14409U, 15401U, 15402U, 15403U, 15405U + ]); + private readonly IMetadataService metadataService; private readonly HomaGachaLogClient homaGachaLogClient; private readonly ITaskContext taskContext; @@ -33,7 +45,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory await taskContext.SwitchToBackgroundAsync(); List historyWishBuilders = context.GachaEvents.SelectList(gachaEvent => new HistoryWishBuilder(gachaEvent, context)); - return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options.IsEmptyHistoryWishVisible); + return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options.IsEmptyHistoryWishVisible, options.IsNeverHeldStatisticsItemVisible); } private static GachaStatistics CreateCore( @@ -42,7 +54,8 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory List items, List historyWishBuilders, in GachaLogServiceMetadataContext context, - bool isEmptyHistoryWishVisible) + bool isEmptyHistoryWishVisible, + bool isNeverHeldStatisticsItemVisible) { TypedWishSummaryBuilderContext standardContext = TypedWishSummaryBuilderContext.StandardWish(taskContext, gachaLogClient); TypedWishSummaryBuilder standardWishBuilder = new(standardContext); @@ -62,6 +75,45 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory Dictionary purpleWeaponCounter = []; Dictionary blueWeaponCounter = []; + if (isNeverHeldStatisticsItemVisible) + { + orangeAvatarCounter = context.IdAvatarMap.Values + .Where(avatar => avatar.Quality == QualityType.QUALITY_ORANGE) + .ToDictionary(avatar => avatar, _ => 0); + purpleAvatarCounter = context.IdAvatarMap.Values + .Where(avatar => avatar.Quality == QualityType.QUALITY_PURPLE) + .ToDictionary(avatar => avatar, _ => 0); + orangeWeaponCounter = context.IdWeaponMap.Values + .Where(weapon => weapon.Quality == QualityType.QUALITY_ORANGE) + .ToDictionary(weapon => weapon, _ => 0); + + HashSet purpleWeapons = []; + foreach (uint weaponId in PurpleStandardWeaponIdsSet) + { + purpleWeapons.Add(context.IdWeaponMap[weaponId]); + } + + foreach (GachaEvent gachaEvent in context.GachaEvents) + { + if (gachaEvent.Type is GachaType.ActivityWeapon) + { + foreach (uint weaponId in gachaEvent.UpPurpleList) + { + purpleWeapons.Add(context.IdWeaponMap[weaponId]); + } + } + } + + HashSet blueWeapons = []; + foreach (uint weaponId in BlueStandardWeaponIdsSet) + { + blueWeapons.Add(context.IdWeaponMap[weaponId]); + } + + purpleWeaponCounter = purpleWeapons.ToDictionary(weapon => weapon, _ => 0); + blueWeaponCounter = blueWeapons.ToDictionary(weapon => weapon, _ => 0); + } + // Pre group builders Dictionary> historyWishBuilderMap = historyWishBuilders .GroupBy(b => b.ConfigType) diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/GachaLogPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/GachaLogPage.xaml index 46245bd0..42c3b62c 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/GachaLogPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/GachaLogPage.xaml @@ -3,7 +3,8 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cw="using:CommunityToolkit.WinUI" - xmlns:cwc="using:CommunityToolkit.WinUI.Controls" + xmlns:cwcont="using:CommunityToolkit.WinUI.Controls" + xmlns:cwconv="using:CommunityToolkit.WinUI.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mxi="using:Microsoft.Xaml.Interactivity" @@ -24,6 +25,11 @@ + + 1.0 + 0.4 + + @@ -120,12 +126,12 @@ Style="{StaticResource SubtitleTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageGachaLogHutaoCloudNotAllowed}" TextAlignment="Center"/> - - - + - + @@ -501,35 +508,35 @@ Style="{StaticResource SubtitleTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageGachaLogHint}"/> - - - - - - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml index 3a701268..660c9935 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml @@ -559,6 +559,15 @@ OffContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOff}" OnContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOn}"/> + + + From 29e94130224a0bd25f168257177e66eb0dd01cb8 Mon Sep 17 00:00:00 2001 From: qhy040404 Date: Wed, 17 Apr 2024 15:11:16 +0800 Subject: [PATCH 2/4] code style --- .../Snap.Hutao/Model/Entity/SettingEntry.Constant.cs | 2 +- .../Snap.Hutao/Resource/Localization/SH.resx | 4 ++-- src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs | 12 ++++++------ .../GachaLog/Factory/GachaStatisticsFactory.cs | 2 +- src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs index 66d3fa06..18bbdbad 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Entity/SettingEntry.Constant.cs @@ -19,7 +19,7 @@ internal sealed partial class SettingEntry public const string AnnouncementRegion = "AnnouncementRegion"; public const string IsEmptyHistoryWishVisible = "IsEmptyHistoryWishVisible"; - public const string IsNeverHeldStatisticsItemVisible = "IsNeverHeldStatisticsItemVisible"; + public const string IsUnobtainedWishItemVisible = "IsUnobtainedWishItemVisible"; public const string GeetestCustomCompositeUrl = "GeetestCustomCompositeUrl"; diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 3246063b..9c230b4d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2636,10 +2636,10 @@ 快捷键 - + 在祈愿记录页面显示或隐藏未持有过的角色或武器 - + 未持有过的角色或武器 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs index a8538a73..02df02fb 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs @@ -15,8 +15,8 @@ namespace Snap.Hutao.Service; [Injection(InjectAs.Singleton)] internal sealed partial class AppOptions : DbStoreOptions { - private bool? isNeverHeldStatisticsItemVisible; private bool? isEmptyHistoryWishVisible; + private bool? isUnobtainedWishItemVisible; private BackdropType? backdropType; private ElementTheme? elementTheme; private BackgroundImageType? backgroundImageType; @@ -25,14 +25,14 @@ internal sealed partial class AppOptions : DbStoreOptions public bool IsEmptyHistoryWishVisible { - get => GetOption(ref isEmptyHistoryWishVisible, SettingEntry.IsEmptyHistoryWishVisible); + get => GetOption(ref isEmptyHistoryWishVisible, SettingEntry.IsEmptyHistoryWishVisible, false); set => SetOption(ref isEmptyHistoryWishVisible, SettingEntry.IsEmptyHistoryWishVisible, value); } - public bool IsNeverHeldStatisticsItemVisible + public bool IsUnobtainedWishItemVisible { - get => GetOption(ref isNeverHeldStatisticsItemVisible, SettingEntry.IsNeverHeldStatisticsItemVisible); - set => SetOption(ref isNeverHeldStatisticsItemVisible, SettingEntry.IsNeverHeldStatisticsItemVisible, value); + get => GetOption(ref isUnobtainedWishItemVisible, SettingEntry.IsUnobtainedWishItemVisible, false); + set => SetOption(ref isUnobtainedWishItemVisible, SettingEntry.IsUnobtainedWishItemVisible, value); } public List> BackdropTypes { get; } = CollectionsNameValue.FromEnum(type => type >= 0); @@ -74,7 +74,7 @@ internal sealed partial class AppOptions : DbStoreOptions public string GeetestCustomCompositeUrl { - get => GetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl); + get => GetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl, false); set => SetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl, value); } diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs index 69e2c5fc..1f5baa65 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs @@ -45,7 +45,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory await taskContext.SwitchToBackgroundAsync(); List historyWishBuilders = context.GachaEvents.SelectList(gachaEvent => new HistoryWishBuilder(gachaEvent, context)); - return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options.IsEmptyHistoryWishVisible, options.IsNeverHeldStatisticsItemVisible); + return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options.IsEmptyHistoryWishVisible, options.IsUnobtainedWishItemVisible); } private static GachaStatistics CreateCore( diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml index 660c9935..0c9cec0e 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml @@ -560,11 +560,11 @@ OnContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOn}"/> From 292b21a75947c4982209338a28ffed04d0821494 Mon Sep 17 00:00:00 2001 From: qhy040404 Date: Wed, 17 Apr 2024 15:15:00 +0800 Subject: [PATCH 3/4] fix build --- .../Snap.Hutao/Resource/Localization/SH.resx | 12 ++++++------ src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs | 2 +- .../GachaLog/Factory/GachaStatisticsFactory.cs | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 9c230b4d..32642338 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2636,12 +2636,6 @@ 快捷键 - - 在祈愿记录页面显示或隐藏未持有过的角色或武器 - - - 未持有过的角色或武器 - 前往官网 @@ -2708,6 +2702,12 @@ 贡献翻译 + + 在祈愿记录页面显示或隐藏未持有过的角色或武器 + + + 未持有过的角色或武器 + 前往商店 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs index 02df02fb..9fb24aa6 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AppOptions.cs @@ -74,7 +74,7 @@ internal sealed partial class AppOptions : DbStoreOptions public string GeetestCustomCompositeUrl { - get => GetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl, false); + get => GetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl); set => SetOption(ref geetestCustomCompositeUrl, SettingEntry.GeetestCustomCompositeUrl, value); } diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs index 1f5baa65..895466ec 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs @@ -55,7 +55,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory List historyWishBuilders, in GachaLogServiceMetadataContext context, bool isEmptyHistoryWishVisible, - bool isNeverHeldStatisticsItemVisible) + bool isUnobtainedWishItemVisible) { TypedWishSummaryBuilderContext standardContext = TypedWishSummaryBuilderContext.StandardWish(taskContext, gachaLogClient); TypedWishSummaryBuilder standardWishBuilder = new(standardContext); @@ -75,7 +75,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory Dictionary purpleWeaponCounter = []; Dictionary blueWeaponCounter = []; - if (isNeverHeldStatisticsItemVisible) + if (isUnobtainedWishItemVisible) { orangeAvatarCounter = context.IdAvatarMap.Values .Where(avatar => avatar.Quality == QualityType.QUALITY_ORANGE) From cb00fdbda0e7c1a917d3fd8221714a66cadb00b0 Mon Sep 17 00:00:00 2001 From: Lightczx <1686188646@qq.com> Date: Fri, 19 Apr 2024 09:41:04 +0800 Subject: [PATCH 4/4] code style --- .../Snap.Hutao/Resource/Localization/SH.resx | 4 ++-- .../Factory/GachaStatisticsFactory.cs | 22 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 32642338..58c6d46b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2703,10 +2703,10 @@ 贡献翻译 - 在祈愿记录页面显示或隐藏未持有过的角色或武器 + 在祈愿记录页面角色与武器页签显示未抽取到的祈愿物品 - 未持有过的角色或武器 + 未抽取到的祈愿物品 前往商店 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs index 895466ec..cc988e76 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs @@ -26,15 +26,22 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory { private static readonly FrozenSet BlueStandardWeaponIdsSet = FrozenSet.ToFrozenSet( [ - 11301U, 11302U, 11306U, 12301U, 12302U, 12305U, 13303U, 14301U, 14302U, 14304U, 15301U, 15302U, 15304U + 11301U, 11302U, 11306U, + 12301U, 12302U, 12305U, + 13303U, + 14301U, 14302U, 14304U, + 15301U, 15302U, 15304U ]); private static readonly FrozenSet PurpleStandardWeaponIdsSet = FrozenSet.ToFrozenSet( [ - 11401U, 11402U, 11403U, 11405U, 12401U, 12402U, 12403U, 12405U, 13401U, 13407U, 14401U, 14402U, 14403U, 14409U, 15401U, 15402U, 15403U, 15405U + 11401U, 11402U, 11403U, 11405U, + 12401U, 12402U, 12403U, 12405U, + 13401U, 13407U, + 14401U, 14402U, 14403U, 14409U, + 15401U, 15402U, 15403U, 15405U ]); - private readonly IMetadataService metadataService; private readonly HomaGachaLogClient homaGachaLogClient; private readonly ITaskContext taskContext; private readonly AppOptions options; @@ -45,7 +52,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory await taskContext.SwitchToBackgroundAsync(); List historyWishBuilders = context.GachaEvents.SelectList(gachaEvent => new HistoryWishBuilder(gachaEvent, context)); - return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options.IsEmptyHistoryWishVisible, options.IsUnobtainedWishItemVisible); + return CreateCore(taskContext, homaGachaLogClient, items, historyWishBuilders, context, options); } private static GachaStatistics CreateCore( @@ -54,8 +61,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory List items, List historyWishBuilders, in GachaLogServiceMetadataContext context, - bool isEmptyHistoryWishVisible, - bool isUnobtainedWishItemVisible) + AppOptions appOptions) { TypedWishSummaryBuilderContext standardContext = TypedWishSummaryBuilderContext.StandardWish(taskContext, gachaLogClient); TypedWishSummaryBuilder standardWishBuilder = new(standardContext); @@ -75,7 +81,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory Dictionary purpleWeaponCounter = []; Dictionary blueWeaponCounter = []; - if (isUnobtainedWishItemVisible) + if (appOptions.IsUnobtainedWishItemVisible) { orangeAvatarCounter = context.IdAvatarMap.Values .Where(avatar => avatar.Quality == QualityType.QUALITY_ORANGE) @@ -200,7 +206,7 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory { // history HistoryWishes = historyWishBuilders - .Where(b => isEmptyHistoryWishVisible || (!b.IsEmpty)) + .Where(b => appOptions.IsEmptyHistoryWishVisible || (!b.IsEmpty)) .OrderByDescending(builder => builder.From) .ThenBy(builder => builder.ConfigType, GachaTypeComparer.Shared) .Select(builder => builder.ToHistoryWish())