diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 2564a4b8..1212a27d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2732,6 +2732,15 @@ 已复制到剪贴板 + + 全部完成 + + + 尚未开启 + + + 进行中 + 已完成 diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuest.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuest.cs new file mode 100644 index 00000000..76ba2a2b --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuest.cs @@ -0,0 +1,22 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.DailyNote; + +internal sealed class ArchonQuest +{ + [JsonPropertyName("status")] + public ArchonQuestStatus Status { get; set; } + + /// + /// 第X章 第Y幕 + /// + [JsonPropertyName("chapter_num")] + public string ChapterNum { get; set; } = default!; + + [JsonPropertyName("chapter_title")] + public string ChapterTitle { get; set; } = default!; + + [JsonPropertyName("id")] + public uint Id { get; set; } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestProgress.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestProgress.cs new file mode 100644 index 00000000..fd16627b --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestProgress.cs @@ -0,0 +1,22 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.DailyNote; + +internal sealed class ArchonQuestProgress +{ + [JsonPropertyName("list")] + public List List { get; set; } = default!; + + [JsonPropertyName("is_open_archon_quest")] + public bool IsOpenArchonQuest { get; set; } + + [JsonPropertyName("is_finish_all_mainline")] + public bool IsFinishAllMainline { get; set; } + + [JsonPropertyName("is_finish_all_interchapter")] + public bool IsFinishAllInterchapter { get; set; } + + [JsonPropertyName("wiki_url")] + public string WikiUrl { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestStatus.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestStatus.cs new file mode 100644 index 00000000..7a07e077 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/ArchonQuestStatus.cs @@ -0,0 +1,17 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.DailyNote; + +[Localization] +internal enum ArchonQuestStatus +{ + [LocalizationKey("WebDailyNoteArchonQuestStatusFinished")] + StatusFinished, + + [LocalizationKey("WebDailyNoteArchonQuestStatusOngoing")] + StatusOngoing, + + [LocalizationKey("WebDailyNoteArchonQuestStatusNotOpen")] + StatusNotOpen, +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/DailyNote.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/DailyNote.cs index f2038ee6..a88b0459 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/DailyNote.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/DailyNote/DailyNote.cs @@ -7,20 +7,16 @@ namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.DailyNote; /// 实时便笺 /// [HighQuality] +[SuppressMessage("", "SA1124")] internal sealed class DailyNote : DailyNoteCommon { - /// - /// 格式化的树脂显示 - /// + #region Binding [JsonIgnore] public string ResinFormatted { get => $"{CurrentResin}/{MaxResin}"; } - /// - /// 格式化的树脂恢复时间 - /// [JsonIgnore] public string ResinRecoveryTargetTime { @@ -45,18 +41,12 @@ internal sealed class DailyNote : DailyNoteCommon } } - /// - /// 格式化任务 - /// [JsonIgnore] public string TaskFormatted { get => $"{FinishedTaskNum}/{TotalTaskNum}"; } - /// - /// 每日委托奖励字符串 - /// [JsonIgnore] public string ExtraTaskRewardDescription { @@ -70,53 +60,24 @@ internal sealed class DailyNote : DailyNoteCommon } } - /// - /// 剩余周本折扣次数 - /// - [JsonPropertyName("remain_resin_discount_num")] - public int RemainResinDiscountNum { get; set; } - - /// - /// 周本树脂减免使用次数 - /// [JsonIgnore] public int ResinDiscountUsedNum { get => ResinDiscountNumLimit - RemainResinDiscountNum; } - /// - /// 周本折扣总次数 - /// - [JsonPropertyName("resin_discount_num_limit")] - public int ResinDiscountNumLimit { get; set; } - - /// - /// 格式化周本 - /// + [JsonIgnore] public string ResinDiscountFormatted { get => $"{ResinDiscountUsedNum}/{ResinDiscountNumLimit}"; } - /// - /// 洞天宝钱恢复时间 类型的秒数 - /// - [JsonPropertyName("home_coin_recovery_time")] - public int HomeCoinRecoveryTime { get; set; } - - /// - /// 格式化洞天宝钱 - /// [JsonIgnore] public string HomeCoinFormatted { get => MaxHomeCoin == 0 ? SH.WebDailyNoteHomeLocked : $"{CurrentHomeCoin}/{MaxHomeCoin}"; } - /// - /// 格式化的洞天宝钱恢复时间 - /// [JsonIgnore] public string HomeCoinRecoveryTargetTimeFormatted { @@ -134,6 +95,25 @@ internal sealed class DailyNote : DailyNoteCommon return SH.FormatWebDailyNoteHomeCoinRecoveryFormat(day, reach); } } + #endregion + + /// + /// 剩余周本折扣次数 + /// + [JsonPropertyName("remain_resin_discount_num")] + public int RemainResinDiscountNum { get; set; } + + /// + /// 周本折扣总次数 + /// + [JsonPropertyName("resin_discount_num_limit")] + public int ResinDiscountNumLimit { get; set; } + + /// + /// 洞天宝钱恢复时间 类型的秒数 + /// + [JsonPropertyName("home_coin_recovery_time")] + public int HomeCoinRecoveryTime { get; set; } /// /// 日历链接 @@ -149,4 +129,7 @@ internal sealed class DailyNote : DailyNoteCommon [JsonPropertyName("daily_task")] public DailyTask DailyTask { get; set; } = default!; + + [JsonPropertyName("archon_quest_progress")] + public ArchonQuestProgress ArchonQuestProgress { get; set; } = default!; } \ No newline at end of file