From 4cef096cb5d839f45f00b1d31ff05aa387353129 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Wed, 12 Jul 2023 17:27:17 +0800 Subject: [PATCH] refine code --- .../Model/Metadata/Item/Materials.cs | 60 +++++++++---------- .../Metadata/Weapon/Weapon.Implementation.cs | 2 +- .../Service/DailyNote/DailyNoteOptions.cs | 17 +++--- .../Factory/GachaStatisticsExtension.cs | 2 +- .../Factory/GachaStatisticsFactory.cs | 4 ++ .../Factory/GachaStatisticsSlimFactory.cs | 4 ++ .../GachaLog/Factory/HistoryWishBuilder.cs | 22 +++---- .../Factory/HutaoStatisticsFactory.cs | 2 +- .../Factory/TypedWishSummaryBuilder.cs | 3 + .../Service/GachaLog/UIGFImportService.cs | 2 +- .../Service/Game/Locator/ManualGameLocator.cs | 2 +- 11 files changed, 65 insertions(+), 55 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Materials.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Materials.cs index a96ae92b..49a4959f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Materials.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Materials.cs @@ -15,44 +15,44 @@ internal static class Materials { private static readonly ImmutableHashSet MondayThursdayItemsInner = new HashSet { - 104301, 104302, 104303, // 「自由」 - 104310, 104311, 104312, // 「繁荣」 - 104320, 104321, 104322, // 「浮世」 - 104329, 104330, 104331, // 「诤言」 - 104338, 104339, 104340, // 「公平」 - 114001, 114002, 114003, 114004, // 高塔孤王 - 114013, 114014, 114015, 114016, // 孤云寒林 - 114025, 114026, 114027, 114028, // 远海夷地 - 114037, 114038, 114039, 114040, // 谧林涓露 - 114049, 114050, 114051, 114052, // 悠古弦音 + 104301U, 104302U, 104303U, // 「自由」 + 104310U, 104311U, 104312U, // 「繁荣」 + 104320U, 104321U, 104322U, // 「浮世」 + 104329U, 104330U, 104331U, // 「诤言」 + 104338U, 104339U, 104340U, // 「公平」 + 114001U, 114002U, 114003U, 114004U, // 高塔孤王 + 114013U, 114014U, 114015U, 114016U, // 孤云寒林 + 114025U, 114026U, 114027U, 114028U, // 远海夷地 + 114037U, 114038U, 114039U, 114040U, // 谧林涓露 + 114049U, 114050U, 114051U, 114052U, // 悠古弦音 }.ToImmutableHashSet(); private static readonly ImmutableHashSet TuesdayFridayItemsInner = new HashSet { - 104304, 104305, 104306, // 「抗争」 - 104313, 104314, 104315, // 「勤劳」 - 104323, 104324, 104325, // 「风雅」 - 104332, 104333, 104334, // 「巧思」 - 104341, 104342, 104343, // 「正义」 - 114005, 114006, 114007, 114008, // 凛风奔狼 - 114017, 114018, 114019, 114020, // 雾海云间 - 114029, 114030, 114031, 114032, // 鸣神御灵 - 114041, 114042, 114043, 114044, // 绿洲花园 - 114053, 114054, 114055, 114056, // 纯圣露滴 + 104304U, 104305U, 104306U, // 「抗争」 + 104313U, 104314U, 104315U, // 「勤劳」 + 104323U, 104324U, 104325U, // 「风雅」 + 104332U, 104333U, 104334U, // 「巧思」 + 104341U, 104342U, 104343U, // 「正义」 + 114005U, 114006U, 114007U, 114008U, // 凛风奔狼 + 114017U, 114018U, 114019U, 114020U, // 雾海云间 + 114029U, 114030U, 114031U, 114032U, // 鸣神御灵 + 114041U, 114042U, 114043U, 114044U, // 绿洲花园 + 114053U, 114054U, 114055U, 114056U, // 纯圣露滴 }.ToImmutableHashSet(); private static readonly ImmutableHashSet WednesdaySaturdayItemsInner = new HashSet { - 104307, 104308, 104309, // 「诗文」 - 104316, 104317, 104318, // 「黄金」 - 104326, 104327, 104328, // 「天光」 - 104335, 104336, 104337, // 「笃行」 - 104344, 104345, 104346, // 「秩序」 - 114009, 114010, 114011, 114012, // 狮牙斗士 - 114021, 114022, 114023, 114024, // 漆黑陨铁 - 114033, 114034, 114035, 114036, // 今昔剧画 - 114045, 114046, 114047, 114048, // 谧林涓露 - 114057, 114058, 114059, 114060, // 无垢之海 + 104307U, 104308U, 104309U, // 「诗文」 + 104316U, 104317U, 104318U, // 「黄金」 + 104326U, 104327U, 104328U, // 「天光」 + 104335U, 104336U, 104337U, // 「笃行」 + 104344U, 104345U, 104346U, // 「秩序」 + 114009U, 114010U, 114011U, 114012U, // 狮牙斗士 + 114021U, 114022U, 114023U, 114024U, // 漆黑陨铁 + 114033U, 114034U, 114035U, 114036U, // 今昔剧画 + 114045U, 114046U, 114047U, 114048U, // 谧林涓露 + 114057U, 114058U, 114059U, 114060U, // 无垢之海 }.ToImmutableHashSet(); /// diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Weapon/Weapon.Implementation.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Weapon/Weapon.Implementation.cs index 87b1b1e3..8558a149 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Weapon/Weapon.Implementation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Weapon/Weapon.Implementation.cs @@ -21,7 +21,7 @@ internal sealed partial class Weapon : IStatisticsItemSource, ISummaryItemSource [JsonIgnore] public WeaponCollocationView? Collocation { get; set; } - /// + /// [JsonIgnore] public QualityType Quality { diff --git a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteOptions.cs index b0232f39..549bd83e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteOptions.cs @@ -17,14 +17,6 @@ internal sealed class DailyNoteOptions : DbStoreOptions { private readonly IServiceProvider serviceProvider; private readonly IScheduleTaskInterop scheduleTaskInterop; - private readonly List> refreshTimes = new() - { - new(SH.ViewModelDailyNoteRefreshTime4, 240), - new(SH.ViewModelDailyNoteRefreshTime8, 480), - new(SH.ViewModelDailyNoteRefreshTime30, 1800), - new(SH.ViewModelDailyNoteRefreshTime40, 2400), - new(SH.ViewModelDailyNoteRefreshTime60, 3600), - }; private NameValue? selectedRefreshTime; private bool? isReminderNotification; @@ -44,7 +36,14 @@ internal sealed class DailyNoteOptions : DbStoreOptions /// /// 刷新时间 /// - public List> RefreshTimes { get => refreshTimes; } + public List> RefreshTimes { get; } = new() + { + new(SH.ViewModelDailyNoteRefreshTime4, 240), + new(SH.ViewModelDailyNoteRefreshTime8, 480), + new(SH.ViewModelDailyNoteRefreshTime30, 1800), + new(SH.ViewModelDailyNoteRefreshTime40, 2400), + new(SH.ViewModelDailyNoteRefreshTime60, 3600), + }; /// /// 选中的刷新时间 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsExtension.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsExtension.cs index ae0e5f37..3c9ffd8a 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsExtension.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsExtension.cs @@ -23,7 +23,7 @@ internal static class GachaStatisticsExtension { int sum = 0; int count = 0; - foreach (byte b in span) + foreach (ref readonly byte b in span) { sum += b; count++; 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 70df4bec..e7fa2a73 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsFactory.cs @@ -75,6 +75,8 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory purpleAvatarCounter.IncreaseOne(avatar); targetHistoryWishBuilder?.IncreasePurple(avatar); break; + default: + break; } standardWishBuilder.Track(item, avatar, isUp); @@ -102,6 +104,8 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory targetHistoryWishBuilder?.IncreaseBlue(weapon); blueWeaponCounter.IncreaseOne(weapon); break; + default: + break; } standardWishBuilder.Track(item, weapon, isUp); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsSlimFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsSlimFactory.cs index e306f135..cd537599 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsSlimFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/GachaStatisticsSlimFactory.cs @@ -51,6 +51,8 @@ internal sealed partial class GachaStatisticsSlimFactory : IGachaStatisticsSlimF case GachaConfigType.WeaponEventWish: Track(nameQuality, ref weaponOrangeTracker, ref weaponPurpleTracker); break; + default: + break; } } @@ -85,6 +87,8 @@ internal sealed partial class GachaStatisticsSlimFactory : IGachaStatisticsSlimF ++orangeTracker; ++purpleTracker; break; + default: + break; } } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HistoryWishBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HistoryWishBuilder.cs index 35b44267..7585cd7c 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HistoryWishBuilder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HistoryWishBuilder.cs @@ -15,7 +15,6 @@ namespace Snap.Hutao.Service.GachaLog.Factory; internal sealed class HistoryWishBuilder { private readonly GachaEvent gachaEvent; - private readonly GachaConfigType configType; private readonly Dictionary orangeUpCounter = new(); private readonly Dictionary purpleUpCounter = new(); @@ -34,24 +33,25 @@ internal sealed class HistoryWishBuilder public HistoryWishBuilder(GachaEvent gachaEvent, GachaLogServiceContext context) { this.gachaEvent = gachaEvent; - configType = gachaEvent.Type; + ConfigType = gachaEvent.Type; - if (configType is GachaConfigType.AvatarEventWish or GachaConfigType.AvatarEventWish2) + switch (ConfigType) { - orangeUpCounter = gachaEvent.UpOrangeList.Select(id => context.IdAvatarMap[id]).ToDictionary(a => (IStatisticsItemSource)a, a => 0); - purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdAvatarMap[id]).ToDictionary(a => (IStatisticsItemSource)a, a => 0); - } - else if (configType is GachaConfigType.WeaponEventWish) - { - orangeUpCounter = gachaEvent.UpOrangeList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0); - purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0); + case GachaConfigType.AvatarEventWish or GachaConfigType.AvatarEventWish2: + orangeUpCounter = gachaEvent.UpOrangeList.Select(id => context.IdAvatarMap[id]).ToDictionary(a => (IStatisticsItemSource)a, a => 0); + purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdAvatarMap[id]).ToDictionary(a => (IStatisticsItemSource)a, a => 0); + break; + case GachaConfigType.WeaponEventWish: + orangeUpCounter = gachaEvent.UpOrangeList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0); + purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0); + break; } } /// /// 祈愿配置类型 /// - public GachaConfigType ConfigType { get => configType; } + public GachaConfigType ConfigType { get; } /// public DateTimeOffset From { get => gachaEvent.From; } diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HutaoStatisticsFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HutaoStatisticsFactory.cs index 8c743401..82d8553b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HutaoStatisticsFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/HutaoStatisticsFactory.cs @@ -55,7 +55,7 @@ internal sealed class HutaoStatisticsFactory { 8U => idAvatarMap[item.Item], 5U => idWeaponMap[item.Item], - _ => throw Must.NeverHappen("不支持的物品 Id"), + _ => throw Must.NeverHappen($"不支持的物品 Id:{item.Item}"), }; StatisticsItem statisticsItem = source.ToStatisticsItem(unchecked((int)item.Count)); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs index 040e89a1..525234bb 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/Factory/TypedWishSummaryBuilder.cs @@ -117,6 +117,9 @@ internal sealed class TypedWishSummaryBuilder ++totalBluePullTracker; break; } + + default: + break; } } } diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UIGFImportService.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UIGFImportService.cs index d607892f..f4eab009 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UIGFImportService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UIGFImportService.cs @@ -36,7 +36,7 @@ internal sealed partial class UIGFImportService : IUIGFImportService .OrderBy(i => i.Id) .FirstOrDefault()?.Id ?? long.MaxValue; - logger.LogInformation("Last Id to trim with: [{id}]", trimId); + logger.LogInformation("Last Id to trim with: [{Id}]", trimId); _ = uigf.IsCurrentVersionSupported(out UIGFVersion version); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs index 4ccc0f41..f944f9a2 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs @@ -36,7 +36,7 @@ internal sealed partial class ManualGameLocator : IGameLocator if (isPickerOk) { string fileName = System.IO.Path.GetFileName(file); - if (fileName == GameConstants.YuanShenFileName || fileName == GameConstants.GenshinImpactFileName) + if (fileName is GameConstants.YuanShenFileName or GameConstants.GenshinImpactFileName) { return new(true, file); }