mirror of
https://jihulab.com/DGP-Studio/Snap.Hutao.git
synced 2025-11-19 21:02:53 +08:00
refine code
This commit is contained in:
@@ -15,44 +15,44 @@ internal static class Materials
|
|||||||
{
|
{
|
||||||
private static readonly ImmutableHashSet<MaterialId> MondayThursdayItemsInner = new HashSet<MaterialId>
|
private static readonly ImmutableHashSet<MaterialId> MondayThursdayItemsInner = new HashSet<MaterialId>
|
||||||
{
|
{
|
||||||
104301, 104302, 104303, // 「自由」
|
104301U, 104302U, 104303U, // 「自由」
|
||||||
104310, 104311, 104312, // 「繁荣」
|
104310U, 104311U, 104312U, // 「繁荣」
|
||||||
104320, 104321, 104322, // 「浮世」
|
104320U, 104321U, 104322U, // 「浮世」
|
||||||
104329, 104330, 104331, // 「诤言」
|
104329U, 104330U, 104331U, // 「诤言」
|
||||||
104338, 104339, 104340, // 「公平」
|
104338U, 104339U, 104340U, // 「公平」
|
||||||
114001, 114002, 114003, 114004, // 高塔孤王
|
114001U, 114002U, 114003U, 114004U, // 高塔孤王
|
||||||
114013, 114014, 114015, 114016, // 孤云寒林
|
114013U, 114014U, 114015U, 114016U, // 孤云寒林
|
||||||
114025, 114026, 114027, 114028, // 远海夷地
|
114025U, 114026U, 114027U, 114028U, // 远海夷地
|
||||||
114037, 114038, 114039, 114040, // 谧林涓露
|
114037U, 114038U, 114039U, 114040U, // 谧林涓露
|
||||||
114049, 114050, 114051, 114052, // 悠古弦音
|
114049U, 114050U, 114051U, 114052U, // 悠古弦音
|
||||||
}.ToImmutableHashSet();
|
}.ToImmutableHashSet();
|
||||||
|
|
||||||
private static readonly ImmutableHashSet<MaterialId> TuesdayFridayItemsInner = new HashSet<MaterialId>
|
private static readonly ImmutableHashSet<MaterialId> TuesdayFridayItemsInner = new HashSet<MaterialId>
|
||||||
{
|
{
|
||||||
104304, 104305, 104306, // 「抗争」
|
104304U, 104305U, 104306U, // 「抗争」
|
||||||
104313, 104314, 104315, // 「勤劳」
|
104313U, 104314U, 104315U, // 「勤劳」
|
||||||
104323, 104324, 104325, // 「风雅」
|
104323U, 104324U, 104325U, // 「风雅」
|
||||||
104332, 104333, 104334, // 「巧思」
|
104332U, 104333U, 104334U, // 「巧思」
|
||||||
104341, 104342, 104343, // 「正义」
|
104341U, 104342U, 104343U, // 「正义」
|
||||||
114005, 114006, 114007, 114008, // 凛风奔狼
|
114005U, 114006U, 114007U, 114008U, // 凛风奔狼
|
||||||
114017, 114018, 114019, 114020, // 雾海云间
|
114017U, 114018U, 114019U, 114020U, // 雾海云间
|
||||||
114029, 114030, 114031, 114032, // 鸣神御灵
|
114029U, 114030U, 114031U, 114032U, // 鸣神御灵
|
||||||
114041, 114042, 114043, 114044, // 绿洲花园
|
114041U, 114042U, 114043U, 114044U, // 绿洲花园
|
||||||
114053, 114054, 114055, 114056, // 纯圣露滴
|
114053U, 114054U, 114055U, 114056U, // 纯圣露滴
|
||||||
}.ToImmutableHashSet();
|
}.ToImmutableHashSet();
|
||||||
|
|
||||||
private static readonly ImmutableHashSet<MaterialId> WednesdaySaturdayItemsInner = new HashSet<MaterialId>
|
private static readonly ImmutableHashSet<MaterialId> WednesdaySaturdayItemsInner = new HashSet<MaterialId>
|
||||||
{
|
{
|
||||||
104307, 104308, 104309, // 「诗文」
|
104307U, 104308U, 104309U, // 「诗文」
|
||||||
104316, 104317, 104318, // 「黄金」
|
104316U, 104317U, 104318U, // 「黄金」
|
||||||
104326, 104327, 104328, // 「天光」
|
104326U, 104327U, 104328U, // 「天光」
|
||||||
104335, 104336, 104337, // 「笃行」
|
104335U, 104336U, 104337U, // 「笃行」
|
||||||
104344, 104345, 104346, // 「秩序」
|
104344U, 104345U, 104346U, // 「秩序」
|
||||||
114009, 114010, 114011, 114012, // 狮牙斗士
|
114009U, 114010U, 114011U, 114012U, // 狮牙斗士
|
||||||
114021, 114022, 114023, 114024, // 漆黑陨铁
|
114021U, 114022U, 114023U, 114024U, // 漆黑陨铁
|
||||||
114033, 114034, 114035, 114036, // 今昔剧画
|
114033U, 114034U, 114035U, 114036U, // 今昔剧画
|
||||||
114045, 114046, 114047, 114048, // 谧林涓露
|
114045U, 114046U, 114047U, 114048U, // 谧林涓露
|
||||||
114057, 114058, 114059, 114060, // 无垢之海
|
114057U, 114058U, 114059U, 114060U, // 无垢之海
|
||||||
}.ToImmutableHashSet();
|
}.ToImmutableHashSet();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ internal sealed partial class Weapon : IStatisticsItemSource, ISummaryItemSource
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public WeaponCollocationView? Collocation { get; set; }
|
public WeaponCollocationView? Collocation { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc cref="INameQuality.Quality" />
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public QualityType Quality
|
public QualityType Quality
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,14 +17,6 @@ internal sealed class DailyNoteOptions : DbStoreOptions
|
|||||||
{
|
{
|
||||||
private readonly IServiceProvider serviceProvider;
|
private readonly IServiceProvider serviceProvider;
|
||||||
private readonly IScheduleTaskInterop scheduleTaskInterop;
|
private readonly IScheduleTaskInterop scheduleTaskInterop;
|
||||||
private readonly List<NameValue<int>> refreshTimes = new()
|
|
||||||
{
|
|
||||||
new(SH.ViewModelDailyNoteRefreshTime4, 240),
|
|
||||||
new(SH.ViewModelDailyNoteRefreshTime8, 480),
|
|
||||||
new(SH.ViewModelDailyNoteRefreshTime30, 1800),
|
|
||||||
new(SH.ViewModelDailyNoteRefreshTime40, 2400),
|
|
||||||
new(SH.ViewModelDailyNoteRefreshTime60, 3600),
|
|
||||||
};
|
|
||||||
|
|
||||||
private NameValue<int>? selectedRefreshTime;
|
private NameValue<int>? selectedRefreshTime;
|
||||||
private bool? isReminderNotification;
|
private bool? isReminderNotification;
|
||||||
@@ -44,7 +36,14 @@ internal sealed class DailyNoteOptions : DbStoreOptions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 刷新时间
|
/// 刷新时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<NameValue<int>> RefreshTimes { get => refreshTimes; }
|
public List<NameValue<int>> RefreshTimes { get; } = new()
|
||||||
|
{
|
||||||
|
new(SH.ViewModelDailyNoteRefreshTime4, 240),
|
||||||
|
new(SH.ViewModelDailyNoteRefreshTime8, 480),
|
||||||
|
new(SH.ViewModelDailyNoteRefreshTime30, 1800),
|
||||||
|
new(SH.ViewModelDailyNoteRefreshTime40, 2400),
|
||||||
|
new(SH.ViewModelDailyNoteRefreshTime60, 3600),
|
||||||
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 选中的刷新时间
|
/// 选中的刷新时间
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ internal static class GachaStatisticsExtension
|
|||||||
{
|
{
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (byte b in span)
|
foreach (ref readonly byte b in span)
|
||||||
{
|
{
|
||||||
sum += b;
|
sum += b;
|
||||||
count++;
|
count++;
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory
|
|||||||
purpleAvatarCounter.IncreaseOne(avatar);
|
purpleAvatarCounter.IncreaseOne(avatar);
|
||||||
targetHistoryWishBuilder?.IncreasePurple(avatar);
|
targetHistoryWishBuilder?.IncreasePurple(avatar);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
standardWishBuilder.Track(item, avatar, isUp);
|
standardWishBuilder.Track(item, avatar, isUp);
|
||||||
@@ -102,6 +104,8 @@ internal sealed partial class GachaStatisticsFactory : IGachaStatisticsFactory
|
|||||||
targetHistoryWishBuilder?.IncreaseBlue(weapon);
|
targetHistoryWishBuilder?.IncreaseBlue(weapon);
|
||||||
blueWeaponCounter.IncreaseOne(weapon);
|
blueWeaponCounter.IncreaseOne(weapon);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
standardWishBuilder.Track(item, weapon, isUp);
|
standardWishBuilder.Track(item, weapon, isUp);
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ internal sealed partial class GachaStatisticsSlimFactory : IGachaStatisticsSlimF
|
|||||||
case GachaConfigType.WeaponEventWish:
|
case GachaConfigType.WeaponEventWish:
|
||||||
Track(nameQuality, ref weaponOrangeTracker, ref weaponPurpleTracker);
|
Track(nameQuality, ref weaponOrangeTracker, ref weaponPurpleTracker);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,6 +87,8 @@ internal sealed partial class GachaStatisticsSlimFactory : IGachaStatisticsSlimF
|
|||||||
++orangeTracker;
|
++orangeTracker;
|
||||||
++purpleTracker;
|
++purpleTracker;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,6 @@ namespace Snap.Hutao.Service.GachaLog.Factory;
|
|||||||
internal sealed class HistoryWishBuilder
|
internal sealed class HistoryWishBuilder
|
||||||
{
|
{
|
||||||
private readonly GachaEvent gachaEvent;
|
private readonly GachaEvent gachaEvent;
|
||||||
private readonly GachaConfigType configType;
|
|
||||||
|
|
||||||
private readonly Dictionary<IStatisticsItemSource, int> orangeUpCounter = new();
|
private readonly Dictionary<IStatisticsItemSource, int> orangeUpCounter = new();
|
||||||
private readonly Dictionary<IStatisticsItemSource, int> purpleUpCounter = new();
|
private readonly Dictionary<IStatisticsItemSource, int> purpleUpCounter = new();
|
||||||
@@ -34,24 +33,25 @@ internal sealed class HistoryWishBuilder
|
|||||||
public HistoryWishBuilder(GachaEvent gachaEvent, GachaLogServiceContext context)
|
public HistoryWishBuilder(GachaEvent gachaEvent, GachaLogServiceContext context)
|
||||||
{
|
{
|
||||||
this.gachaEvent = gachaEvent;
|
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);
|
case GachaConfigType.AvatarEventWish or GachaConfigType.AvatarEventWish2:
|
||||||
purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdAvatarMap[id]).ToDictionary(a => (IStatisticsItemSource)a, a => 0);
|
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)
|
break;
|
||||||
{
|
case GachaConfigType.WeaponEventWish:
|
||||||
orangeUpCounter = gachaEvent.UpOrangeList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0);
|
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);
|
purpleUpCounter = gachaEvent.UpPurpleList.Select(id => context.IdWeaponMap[id]).ToDictionary(w => (IStatisticsItemSource)w, w => 0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 祈愿配置类型
|
/// 祈愿配置类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GachaConfigType ConfigType { get => configType; }
|
public GachaConfigType ConfigType { get; }
|
||||||
|
|
||||||
/// <inheritdoc cref="GachaEvent.From"/>
|
/// <inheritdoc cref="GachaEvent.From"/>
|
||||||
public DateTimeOffset From { get => gachaEvent.From; }
|
public DateTimeOffset From { get => gachaEvent.From; }
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ internal sealed class HutaoStatisticsFactory
|
|||||||
{
|
{
|
||||||
8U => idAvatarMap[item.Item],
|
8U => idAvatarMap[item.Item],
|
||||||
5U => idWeaponMap[item.Item],
|
5U => idWeaponMap[item.Item],
|
||||||
_ => throw Must.NeverHappen("不支持的物品 Id"),
|
_ => throw Must.NeverHappen($"不支持的物品 Id:{item.Item}"),
|
||||||
};
|
};
|
||||||
StatisticsItem statisticsItem = source.ToStatisticsItem(unchecked((int)item.Count));
|
StatisticsItem statisticsItem = source.ToStatisticsItem(unchecked((int)item.Count));
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,9 @@ internal sealed class TypedWishSummaryBuilder
|
|||||||
++totalBluePullTracker;
|
++totalBluePullTracker;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ internal sealed partial class UIGFImportService : IUIGFImportService
|
|||||||
.OrderBy(i => i.Id)
|
.OrderBy(i => i.Id)
|
||||||
.FirstOrDefault()?.Id ?? long.MaxValue;
|
.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);
|
_ = uigf.IsCurrentVersionSupported(out UIGFVersion version);
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ internal sealed partial class ManualGameLocator : IGameLocator
|
|||||||
if (isPickerOk)
|
if (isPickerOk)
|
||||||
{
|
{
|
||||||
string fileName = System.IO.Path.GetFileName(file);
|
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);
|
return new(true, file);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user