From 98ca53370657106a3f73e245854af4c8e7f785ac Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Sat, 16 Sep 2023 21:56:28 +0800 Subject: [PATCH] add tower wave spec --- .../Model/Metadata/Tower/GoalType.cs | 14 ++ .../Model/Metadata/Tower/TowerFloor.cs | 2 +- .../Model/Metadata/Tower/TowerLevel.cs | 22 +- .../Model/Metadata/Tower/TowerMonster.cs | 29 +++ .../Model/Metadata/Tower/TowerWave.cs | 24 ++ .../Model/Metadata/Tower/WaveType.cs | 85 +++++++ .../NameDescription.cs | 2 +- .../Resource/Localization/SH.Designer.cs | 234 ++++++++++++++++++ .../Snap.Hutao/Resource/Localization/SH.resx | 78 ++++++ .../Factory/SummaryAvatarFactory.cs | 1 - .../Service/Metadata/IMetadataService.cs | 226 +---------------- .../Metadata/IMetadataServiceIdDataMap.cs | 79 ++++++ .../Metadata/IMetadataServiceNameDataMap.cs | 24 ++ .../IMetadataServiceNameLevelCurveMap.cs | 31 +++ .../Metadata/IMetadataServiceRawData.cs | 113 +++++++++ .../ViewModel/AvatarProperty/WeaponView.cs | 1 + 16 files changed, 740 insertions(+), 225 deletions(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/GoalType.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerMonster.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerWave.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/WaveType.cs rename src/Snap.Hutao/Snap.Hutao/{ViewModel/AvatarProperty => Model}/NameDescription.cs (95%) create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceIdDataMap.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameDataMap.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameLevelCurveMap.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceRawData.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/GoalType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/GoalType.cs new file mode 100644 index 00000000..2daac6e0 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/GoalType.cs @@ -0,0 +1,14 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Model.Metadata.Tower; + +[Localization] +internal enum GoalType +{ + [LocalizationKey(nameof(SH.ModelMetadataTowerGoalTypeDefeatMonsters))] + DefeatMonsters, + + [LocalizationKey(nameof(SH.ModelMetadataTowerGoalTypeDefendTarget))] + DefendTarget, +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerFloor.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerFloor.cs index 15f482d6..5618080e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerFloor.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerFloor.cs @@ -31,7 +31,7 @@ internal sealed class TowerFloor public string Background { get; set; } = default!; /// - /// 描述 + /// 地脉紊乱 /// public List Descriptions { get; set; } = default!; } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerLevel.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerLevel.cs index 40f3ddc6..24c4604d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerLevel.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerLevel.cs @@ -35,8 +35,28 @@ internal sealed class TowerLevel /// public List FirstMonsters { get; set; } = default!; + /// + /// 上半怪物波次 + /// + public List FirstWaves { get; set; } = default!; + + /// + /// 上半造物 + /// + public NameDescription? FirstGadget { get; set; } + /// /// 下半怪物预览 /// - public List SecondMonsters { get; set; } = default!; + public List? SecondMonsters { get; set; } + + /// + /// 下半怪物波次 + /// + public List SecondWaves { get; set; } = default!; + + /// + /// 下半造物 + /// + public NameDescription? SecondGadget { get; set; } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerMonster.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerMonster.cs new file mode 100644 index 00000000..4a522d80 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerMonster.cs @@ -0,0 +1,29 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Primitive; + +namespace Snap.Hutao.Model.Metadata.Tower; + +internal sealed class TowerMonster +{ + /// + /// 怪物关系Id + /// + public MonsterRelationshipId Id { get; set; } + + /// + /// 个数 + /// + public uint Count { get; set; } + + /// + /// 是否攻击镇石 + /// + public bool AttackMonolith { get; set; } + + /// + /// 特殊词条 + /// + public List? Affixes { get; set; } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerWave.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerWave.cs new file mode 100644 index 00000000..ef00235f --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/TowerWave.cs @@ -0,0 +1,24 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Primitive; + +namespace Snap.Hutao.Model.Metadata.Tower; + +internal sealed class TowerWave +{ + /// + /// 波次类型 + /// + public WaveType Type { get; set; } + + /// + /// 额外描述 + /// + public string? Description { get; set; } + + /// + /// 分波怪物 + /// + public List Monsters { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/WaveType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/WaveType.cs new file mode 100644 index 00000000..ee91c985 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Tower/WaveType.cs @@ -0,0 +1,85 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Model.Metadata.Tower; + +/// +/// 第二波:击败所有怪物,下一波才会出现 +/// D组:不同的组同时在场,各自分波独立 +/// D组第一波:不同的组同时在场,各自分波独立 +/// +[Localization] +internal enum WaveType +{ + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeIndependent))] + Independent = 0, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeWave1))] + Wave1 = 1, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeWave2))] + Wave2 = 2, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeWave3))] + Wave3 = 3, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeWave4))] + Wave4 = 4, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupA))] + GroupA = 10, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupAWave1))] + GroupAWave1 = 11, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupAWave2))] + GroupAWave2 = 12, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupAWave3))] + GroupAWave3 = 13, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupB))] + GroupB = 20, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupBWave1))] + GroupBWave1 = 21, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupBWave2))] + GroupBWave2 = 22, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupBWave3))] + GroupBWave3 = 23, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupC))] + GroupC = 30, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupCWave1))] + GroupCWave1 = 31, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupCWave2))] + GroupCWave2 = 32, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupCWave3))] + GroupCWave3 = 33, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupD))] + GroupD = 40, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupDWave1))] + GroupDWave1 = 41, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupDWave2))] + GroupDWave2 = 42, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeGroupDWave3))] + GroupDWave3 = 43, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeSuppressed))] + Suppressed = 99, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeAdditional))] + Additional = 999, + + [LocalizationKey(nameof(SH.ModelMetadataTowerWaveTypeWave1Additional))] + Wave1Additional = 1999, +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/NameDescription.cs b/src/Snap.Hutao/Snap.Hutao/Model/NameDescription.cs similarity index 95% rename from src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/NameDescription.cs rename to src/Snap.Hutao/Snap.Hutao/Model/NameDescription.cs index 33947aa8..457d88e4 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/NameDescription.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/NameDescription.cs @@ -1,7 +1,7 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -namespace Snap.Hutao.ViewModel.AvatarProperty; +namespace Snap.Hutao.Model; /// /// 名称与描述 diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs index 14483218..2a5f979f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs @@ -861,6 +861,240 @@ namespace Snap.Hutao.Resource.Localization { } } + /// + /// 查找类似 打怪 的本地化字符串。 + /// + internal static string ModelMetadataTowerGoalTypeDefeatMonsters { + get { + return ResourceManager.GetString("ModelMetadataTowerGoalTypeDefeatMonsters", resourceCulture); + } + } + + /// + /// 查找类似 守塔 的本地化字符串。 + /// + internal static string ModelMetadataTowerGoalTypeDefendTarget { + get { + return ResourceManager.GetString("ModelMetadataTowerGoalTypeDefendTarget", resourceCulture); + } + } + + /// + /// 查找类似 附加 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeAdditional { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeAdditional", resourceCulture); + } + } + + /// + /// 查找类似 A组:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupA { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupA", resourceCulture); + } + } + + /// + /// 查找类似 A组第一波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupAWave1 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupAWave1", resourceCulture); + } + } + + /// + /// 查找类似 A组第二波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupAWave2 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupAWave2", resourceCulture); + } + } + + /// + /// 查找类似 A组第三波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupAWave3 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupAWave3", resourceCulture); + } + } + + /// + /// 查找类似 B组:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupB { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupB", resourceCulture); + } + } + + /// + /// 查找类似 B组第一波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupBWave1 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupBWave1", resourceCulture); + } + } + + /// + /// 查找类似 B组第二波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupBWave2 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupBWave2", resourceCulture); + } + } + + /// + /// 查找类似 B组第三波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupBWave3 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupBWave3", resourceCulture); + } + } + + /// + /// 查找类似 C组:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupC { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupC", resourceCulture); + } + } + + /// + /// 查找类似 C组第一波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupCWave1 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupCWave1", resourceCulture); + } + } + + /// + /// 查找类似 C组第二波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupCWave2 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupCWave2", resourceCulture); + } + } + + /// + /// 查找类似 C组第三波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupCWave3 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupCWave3", resourceCulture); + } + } + + /// + /// 查找类似 D组:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupD { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupD", resourceCulture); + } + } + + /// + /// 查找类似 D组第一波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupDWave1 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupDWave1", resourceCulture); + } + } + + /// + /// 查找类似 D组第二波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupDWave2 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupDWave2", resourceCulture); + } + } + + /// + /// 查找类似 D组第三波:不同的组同时在场,各自分波独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeGroupDWave3 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeGroupDWave3", resourceCulture); + } + } + + /// + /// 查找类似 与其他怪物独立 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeIndependent { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeIndependent", resourceCulture); + } + } + + /// + /// 查找类似 暂时没有分波信息 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeSuppressed { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeSuppressed", resourceCulture); + } + } + + /// + /// 查找类似 第一波:击败所有怪物,下一波才会出现 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeWave1 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeWave1", resourceCulture); + } + } + + /// + /// 查找类似 第一波附加:为第一波补充怪物 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeWave1Additional { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeWave1Additional", resourceCulture); + } + } + + /// + /// 查找类似 第二波:击败所有怪物,下一波才会出现 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeWave2 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeWave2", resourceCulture); + } + } + + /// + /// 查找类似 第三波:击败所有怪物,下一波才会出现 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeWave3 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeWave3", resourceCulture); + } + } + + /// + /// 查找类似 第四波:击败所有怪物,下一波才会出现 的本地化字符串。 + /// + internal static string ModelMetadataTowerWaveTypeWave4 { + get { + return ResourceManager.GetString("ModelMetadataTowerWaveTypeWave4", resourceCulture); + } + } + /// /// 查找类似 请更新角色橱窗数据 的本地化字符串。 /// diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 45e997e1..eaa6b75d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -413,6 +413,84 @@ 武器强化素材 Need EXACT same string in game + + 打怪 + + + 守塔 + + + 附加 + + + A组:不同的组同时在场,各自分波独立 + + + A组第一波:不同的组同时在场,各自分波独立 + + + A组第二波:不同的组同时在场,各自分波独立 + + + A组第三波:不同的组同时在场,各自分波独立 + + + B组:不同的组同时在场,各自分波独立 + + + B组第一波:不同的组同时在场,各自分波独立 + + + B组第二波:不同的组同时在场,各自分波独立 + + + B组第三波:不同的组同时在场,各自分波独立 + + + C组:不同的组同时在场,各自分波独立 + + + C组第一波:不同的组同时在场,各自分波独立 + + + C组第二波:不同的组同时在场,各自分波独立 + + + C组第三波:不同的组同时在场,各自分波独立 + + + D组:不同的组同时在场,各自分波独立 + + + D组第一波:不同的组同时在场,各自分波独立 + + + D组第二波:不同的组同时在场,各自分波独立 + + + D组第三波:不同的组同时在场,各自分波独立 + + + 与其他怪物独立 + + + 暂时没有分波信息 + + + 第一波:击败所有怪物,下一波才会出现 + + + 第一波附加:为第一波补充怪物 + + + 第二波:击败所有怪物,下一波才会出现 + + + 第三波:击败所有怪物,下一波才会出现 + + + 第四波:击败所有怪物,下一波才会出现 + 请更新角色橱窗数据 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryAvatarFactory.cs b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryAvatarFactory.cs index 7991f7e3..1cbb6c09 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryAvatarFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/Factory/SummaryAvatarFactory.cs @@ -6,7 +6,6 @@ using Snap.Hutao.Model.Intrinsic; using Snap.Hutao.Model.Intrinsic.Format; using Snap.Hutao.Model.Metadata.Converter; using Snap.Hutao.Model.Primitive; -using Snap.Hutao.ViewModel.AvatarProperty; using Snap.Hutao.Web.Enka.Model; using EntityAvatarInfo = Snap.Hutao.Model.Entity.AvatarInfo; using MetadataAvatar = Snap.Hutao.Model.Metadata.Avatar.Avatar; diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataService.cs index f89a0878..cb40f184 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataService.cs @@ -2,15 +2,6 @@ // Licensed under the MIT license. using Snap.Hutao.Core.DependencyInjection.Abstraction; -using Snap.Hutao.Model.Intrinsic; -using Snap.Hutao.Model.Metadata; -using Snap.Hutao.Model.Metadata.Achievement; -using Snap.Hutao.Model.Metadata.Avatar; -using Snap.Hutao.Model.Metadata.Item; -using Snap.Hutao.Model.Metadata.Monster; -using Snap.Hutao.Model.Metadata.Reliquary; -using Snap.Hutao.Model.Metadata.Weapon; -using Snap.Hutao.Model.Primitive; namespace Snap.Hutao.Service.Metadata; @@ -18,222 +9,15 @@ namespace Snap.Hutao.Service.Metadata; /// 元数据服务 /// [HighQuality] -[SuppressMessage("", "SA1124")] -internal interface IMetadataService : ICastService +internal interface IMetadataService : ICastService, + IMetadataServiceRawData, + IMetadataServiceIdDataMap, + IMetadataServiceNameDataMap, + IMetadataServiceNameLevelCurveMap { /// /// 异步初始化服务,尝试更新元数据 /// /// 初始化是否成功 ValueTask InitializeAsync(); - - #region RawData - - /// - /// 异步获取成就列表 - /// - /// 取消令牌 - /// 成就列表 - ValueTask> GetAchievementsAsync(CancellationToken token = default); - - /// - /// 异步获取成就分类列表 - /// - /// 取消令牌 - /// 成就分类列表 - ValueTask> GetAchievementGoalsAsync(CancellationToken token = default); - - /// - /// 异步获取角色突破列表 - /// - /// 取消令牌 - /// 角色突破列表 - ValueTask> GetAvatarPromotesAsync(CancellationToken token = default); - - /// - /// 异步获取角色列表 - /// - /// 取消令牌 - /// 角色列表 - ValueTask> GetAvatarsAsync(CancellationToken token = default); - - /// - /// 异步获取卡池配置列表 - /// - /// 取消令牌 - /// 卡池配置列表 - ValueTask> GetGachaEventsAsync(CancellationToken token = default); - - /// - /// 异步获取材料列表 - /// - /// 取消令牌 - /// 材料列表 - ValueTask> GetMaterialsAsync(CancellationToken token = default); - - /// - /// 异步获取怪物列表 - /// - /// 取消令牌 - /// 怪物列表 - ValueTask> GetMonstersAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物列表 - /// - /// 取消令牌 - /// 圣遗物列表 - ValueTask> GetReliquariesAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物强化属性列表 - /// - /// 取消令牌 - /// 圣遗物强化属性列表 - ValueTask> GetReliquarySubAffixesAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物等级数据 - /// - /// 取消令牌 - /// 圣遗物等级数据 - ValueTask> GetReliquaryLevelsAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物主属性强化属性列表 - /// - /// 取消令牌 - /// 圣遗物强化属性列表 - ValueTask> GetReliquaryMainAffixesAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物套装 - /// - /// 取消令牌 - /// 圣遗物套装列表 - ValueTask> GetReliquarySetsAsync(CancellationToken token = default); - - /// - /// 异步获取武器突破列表 - /// - /// 取消令牌 - /// 武器突破列表 - ValueTask> GetWeaponPromotesAsync(CancellationToken token = default); - - /// - /// 异步获取武器列表 - /// - /// 取消令牌 - /// 武器列表 - ValueTask> GetWeaponsAsync(CancellationToken token = default); - #endregion - - #region IdDataMap - - /// - /// 异步获取装备被动Id到圣遗物套装的映射 - /// - /// 取消令牌 - /// 装备被动Id到圣遗物套装的映射 - ValueTask> GetEquipAffixIdToReliquarySetMapAsync(CancellationToken token = default); - - ValueTask> GetExtendedEquipAffixIdToReliquarySetMapAsync(CancellationToken token = default); - - /// - /// 异步获取成就映射 - /// - /// 取消令牌 - /// 成就映射 - ValueTask> GetIdToAchievementMapAsync(CancellationToken token = default); - - /// - /// 异步获取Id到角色的字典 - /// - /// 取消令牌 - /// Id到角色的字典 - ValueTask> GetIdToAvatarMapAsync(CancellationToken token = default); - - /// - /// 异步获取显示与材料映射 - /// - /// 取消令牌 - /// 显示与材料映射 - ValueTask> GetIdToDisplayItemAndMaterialMapAsync(CancellationToken token = default); - - /// - /// 异步获取Id到材料的字典 - /// - /// 取消令牌 - /// Id到材料的字典 - ValueTask> GetIdToMaterialMapAsync(CancellationToken token = default(CancellationToken)); - - /// - /// 异步获取Id到圣遗物权重的映射 - /// - /// 取消令牌 - /// Id到圣遗物权重的字典 - ValueTask> GetIdToReliquaryAffixWeightMapAsync(CancellationToken token = default); - - /// - /// 异步获取ID到圣遗物副词条的字典 - /// - /// 取消令牌 - /// 字典 - ValueTask> GetIdToReliquarySubAffixMapAsync(CancellationToken token = default); - - /// - /// 异步获取圣遗物主词条Id与属性的字典 - /// - /// 取消令牌 - /// 字典 - ValueTask> GetIdToReliquaryMainPropertyMapAsync(CancellationToken token = default); - - /// - /// 异步获取ID到武器的字典 - /// - /// 取消令牌 - /// Id到武器的字典 - ValueTask> GetIdToWeaponMapAsync(CancellationToken token = default); - #endregion - - #region NameDataMap - - /// - /// 异步获取名称到角色的字典 - /// - /// 取消令牌 - /// 名称到角色的字典 - ValueTask> GetNameToAvatarMapAsync(CancellationToken token = default); - - /// - /// 异步获取名称到武器的字典 - /// - /// 取消令牌 - /// 名称到武器的字典 - ValueTask> GetNameToWeaponMapAsync(CancellationToken token = default); - #endregion - - #region LevelCurveMap - - /// - /// 异步获取等级角色曲线映射 - /// - /// 取消令牌 - /// 等级角色曲线映射 - ValueTask>> GetLevelToAvatarCurveMapAsync(CancellationToken token = default); - - /// - /// 异步获取等级怪物曲线映射 - /// - /// 取消令牌 - /// 等级怪物曲线映射 - ValueTask>> GetLevelToMonsterCurveMapAsync(CancellationToken token = default); - - /// - /// 异步获取等级武器曲线映射 - /// - /// 取消令牌 - /// 等级武器曲线映射 - ValueTask>> GetLevelToWeaponCurveMapAsync(CancellationToken token = default); - #endregion } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceIdDataMap.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceIdDataMap.cs new file mode 100644 index 00000000..c9a0fc28 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceIdDataMap.cs @@ -0,0 +1,79 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; +using Snap.Hutao.Model.Metadata.Avatar; +using Snap.Hutao.Model.Metadata.Item; +using Snap.Hutao.Model.Metadata.Reliquary; +using Snap.Hutao.Model.Metadata.Weapon; +using Snap.Hutao.Model.Primitive; + +namespace Snap.Hutao.Service.Metadata; + +internal interface IMetadataServiceIdDataMap +{ + /// + /// 异步获取装备被动Id到圣遗物套装的映射 + /// + /// 取消令牌 + /// 装备被动Id到圣遗物套装的映射 + ValueTask> GetEquipAffixIdToReliquarySetMapAsync(CancellationToken token = default); + + ValueTask> GetExtendedEquipAffixIdToReliquarySetMapAsync(CancellationToken token = default); + + /// + /// 异步获取成就映射 + /// + /// 取消令牌 + /// 成就映射 + ValueTask> GetIdToAchievementMapAsync(CancellationToken token = default); + + /// + /// 异步获取Id到角色的字典 + /// + /// 取消令牌 + /// Id到角色的字典 + ValueTask> GetIdToAvatarMapAsync(CancellationToken token = default); + + /// + /// 异步获取显示与材料映射 + /// + /// 取消令牌 + /// 显示与材料映射 + ValueTask> GetIdToDisplayItemAndMaterialMapAsync(CancellationToken token = default); + + /// + /// 异步获取Id到材料的字典 + /// + /// 取消令牌 + /// Id到材料的字典 + ValueTask> GetIdToMaterialMapAsync(CancellationToken token = default(CancellationToken)); + + /// + /// 异步获取Id到圣遗物权重的映射 + /// + /// 取消令牌 + /// Id到圣遗物权重的字典 + ValueTask> GetIdToReliquaryAffixWeightMapAsync(CancellationToken token = default); + + /// + /// 异步获取ID到圣遗物副词条的字典 + /// + /// 取消令牌 + /// 字典 + ValueTask> GetIdToReliquarySubAffixMapAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物主词条Id与属性的字典 + /// + /// 取消令牌 + /// 字典 + ValueTask> GetIdToReliquaryMainPropertyMapAsync(CancellationToken token = default); + + /// + /// 异步获取ID到武器的字典 + /// + /// 取消令牌 + /// Id到武器的字典 + ValueTask> GetIdToWeaponMapAsync(CancellationToken token = default); +} diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameDataMap.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameDataMap.cs new file mode 100644 index 00000000..7577d4ed --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameDataMap.cs @@ -0,0 +1,24 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Metadata.Avatar; +using Snap.Hutao.Model.Metadata.Weapon; + +namespace Snap.Hutao.Service.Metadata; + +internal interface IMetadataServiceNameDataMap +{ + /// + /// 异步获取名称到角色的字典 + /// + /// 取消令牌 + /// 名称到角色的字典 + ValueTask> GetNameToAvatarMapAsync(CancellationToken token = default); + + /// + /// 异步获取名称到武器的字典 + /// + /// 取消令牌 + /// 名称到武器的字典 + ValueTask> GetNameToWeaponMapAsync(CancellationToken token = default); +} diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameLevelCurveMap.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameLevelCurveMap.cs new file mode 100644 index 00000000..c715e79a --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceNameLevelCurveMap.cs @@ -0,0 +1,31 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; +using Snap.Hutao.Model.Primitive; + +namespace Snap.Hutao.Service.Metadata; + +internal interface IMetadataServiceNameLevelCurveMap +{ + /// + /// 异步获取等级角色曲线映射 + /// + /// 取消令牌 + /// 等级角色曲线映射 + ValueTask>> GetLevelToAvatarCurveMapAsync(CancellationToken token = default); + + /// + /// 异步获取等级怪物曲线映射 + /// + /// 取消令牌 + /// 等级怪物曲线映射 + ValueTask>> GetLevelToMonsterCurveMapAsync(CancellationToken token = default); + + /// + /// 异步获取等级武器曲线映射 + /// + /// 取消令牌 + /// 等级武器曲线映射 + ValueTask>> GetLevelToWeaponCurveMapAsync(CancellationToken token = default); +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceRawData.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceRawData.cs new file mode 100644 index 00000000..864f8b6a --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/IMetadataServiceRawData.cs @@ -0,0 +1,113 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Metadata; +using Snap.Hutao.Model.Metadata.Achievement; +using Snap.Hutao.Model.Metadata.Avatar; +using Snap.Hutao.Model.Metadata.Item; +using Snap.Hutao.Model.Metadata.Monster; +using Snap.Hutao.Model.Metadata.Reliquary; +using Snap.Hutao.Model.Metadata.Weapon; + +namespace Snap.Hutao.Service.Metadata; + +internal interface IMetadataServiceRawData +{ + /// + /// 异步获取成就列表 + /// + /// 取消令牌 + /// 成就列表 + ValueTask> GetAchievementsAsync(CancellationToken token = default); + + /// + /// 异步获取成就分类列表 + /// + /// 取消令牌 + /// 成就分类列表 + ValueTask> GetAchievementGoalsAsync(CancellationToken token = default); + + /// + /// 异步获取角色突破列表 + /// + /// 取消令牌 + /// 角色突破列表 + ValueTask> GetAvatarPromotesAsync(CancellationToken token = default); + + /// + /// 异步获取角色列表 + /// + /// 取消令牌 + /// 角色列表 + ValueTask> GetAvatarsAsync(CancellationToken token = default); + + /// + /// 异步获取卡池配置列表 + /// + /// 取消令牌 + /// 卡池配置列表 + ValueTask> GetGachaEventsAsync(CancellationToken token = default); + + /// + /// 异步获取材料列表 + /// + /// 取消令牌 + /// 材料列表 + ValueTask> GetMaterialsAsync(CancellationToken token = default); + + /// + /// 异步获取怪物列表 + /// + /// 取消令牌 + /// 怪物列表 + ValueTask> GetMonstersAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物列表 + /// + /// 取消令牌 + /// 圣遗物列表 + ValueTask> GetReliquariesAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物强化属性列表 + /// + /// 取消令牌 + /// 圣遗物强化属性列表 + ValueTask> GetReliquarySubAffixesAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物等级数据 + /// + /// 取消令牌 + /// 圣遗物等级数据 + ValueTask> GetReliquaryLevelsAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物主属性强化属性列表 + /// + /// 取消令牌 + /// 圣遗物强化属性列表 + ValueTask> GetReliquaryMainAffixesAsync(CancellationToken token = default); + + /// + /// 异步获取圣遗物套装 + /// + /// 取消令牌 + /// 圣遗物套装列表 + ValueTask> GetReliquarySetsAsync(CancellationToken token = default); + + /// + /// 异步获取武器突破列表 + /// + /// 取消令牌 + /// 武器突破列表 + ValueTask> GetWeaponPromotesAsync(CancellationToken token = default); + + /// + /// 异步获取武器列表 + /// + /// 取消令牌 + /// 武器列表 + ValueTask> GetWeaponsAsync(CancellationToken token = default); +} diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/WeaponView.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/WeaponView.cs index 40d9f156..8bfb46c7 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/WeaponView.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/AvatarProperty/WeaponView.cs @@ -1,6 +1,7 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. +using Snap.Hutao.Model; using Snap.Hutao.Model.Calculable; using Snap.Hutao.Model.Primitive;