refactor: Round 53 remove all legacy backward-compatibility code
- QuestSO: remove giverNpcId, prerequisiteQuests/Flags/FlagsLogic, failCondition, conditionFlags, npcDialogueKey fields; simplify GiverNpcId property to giverNpc?.npcId; clean ValidatePrerequisiteCycles/HasPrerequisiteCycle to use prerequisites.questDependencies; remove ValidateBranchDialogueKeys migration warning block; clean QuestPrerequisite doc - QuestManager: remove OnLoad DataVersion 1/2 migration paths (ProgressCounts, hasNewFormat/ useNewFormat); remove CheckQuestDepsAndFlags old-field fallback (prerequisiteQuests/Flags); remove UnlockBranches conditionFlags fallback; remove DispatchEvent failCondition fallback; fix ValidatePrerequisites DFS to scan prerequisites.questDependencies - SaveData: remove ProgressCounts (Obsolete), ObjectiveIndex (unused), GiverNpcId (never written) fields from QuestState; simplify DataVersion doc comment - QuestSOEditor: replace migration-only editor with minimal DrawDefaultInspector - QuestModule: update all prerequisiteQuests/conditionFlags/npcDialogueKey/failCondition references to canonical new fields; update ValidateBranchFlags check 10 - FlagAuditModule: replace conditionFlags/prerequisiteFlags scans with conditionFlagEntries/ prerequisites.flagCondition.flags - NpcSO: remove QuestSO.giverNpcId reference from npcId tooltip - NpcAffinityEvent/RewardSO: update doc comments to reference giverNpc instead of giverNpcId Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -134,31 +134,20 @@ namespace BaseGames.Core.Save
|
||||
[Serializable]
|
||||
public class QuestState
|
||||
{
|
||||
/// <summary>
|
||||
/// 此 QuestState 数据格式版本号。
|
||||
/// 1 = 原始格式(ProgressCounts 按索引,已弃用)
|
||||
/// 2 = Round 24+ 格式(ObjectiveProgress 按 objectiveId 键值对)
|
||||
/// 3 = Round 52+ 格式(新增 ObjectiveCompleted、StartedAtUtc、CompletedAtUtc)
|
||||
/// OnLoad 按此字段显式选择解析路径,杜绝依赖 Count > 0 的隐式推断。
|
||||
/// </summary>
|
||||
/// <summary>此 QuestState 数据格式版本号,固定为 3。</summary>
|
||||
public int DataVersion = 3;
|
||||
/// <summary>任务运行时状态字符串。有效值:Unavailable|Available|Active|Paused|Completed|Failed。
|
||||
/// OnLoad 通过 Enum.TryParse 解析;无效值将触发开发模式警告并降级为 Unavailable。</summary>
|
||||
public string Status;
|
||||
public int ObjectiveIndex;
|
||||
/// <summary>新格式(DataVersion≥2):objectiveId → progressCount,重排目标顺序后存档不会错位。</summary>
|
||||
/// <summary>objectiveId → progressCount,重排目标顺序后存档不会错位。</summary>
|
||||
public Dictionary<string, int> ObjectiveProgress = new();
|
||||
/// <summary>各目标是否已判定完成(objectiveId → completed)。
|
||||
/// 防止 GetRequiredCount 在版本迭代中变更后,重新计算结果与存档实际状态不一致。DataVersion≥3 写入。</summary>
|
||||
/// 防止 GetRequiredCount 在版本迭代中变更后,重新计算结果与存档实际状态不一致。</summary>
|
||||
public Dictionary<string, bool> ObjectiveCompleted = new();
|
||||
/// <summary>任务接取时间(Unix 秒时间戳,UTC)。0 = 未记录(旧存档)。DataVersion≥3 写入。</summary>
|
||||
/// <summary>任务接取时间(Unix 秒时间戳,UTC)。0 = 未记录,跳过。</summary>
|
||||
public long StartedAtUtc;
|
||||
/// <summary>任务完成时间(Unix 秒时间戳,UTC)。0 = 未完成或未记录。DataVersion≥3 写入。</summary>
|
||||
/// <summary>任务完成时间(Unix 秒时间戳,UTC)。0 = 未完成或未记录。</summary>
|
||||
public long CompletedAtUtc;
|
||||
/// <summary>旧格式(按数组索引,DataVersion=1):仅用于迁移旧版存档,新存档不再写入。已弃用,将在后续版本移除。</summary>
|
||||
[System.Obsolete("旧格式存档兼容字段,仅供 OnLoad DataVersion=1 迁移使用。新存档改用 ObjectiveProgress(objectiveId 键值对)。")]
|
||||
public List<int> ProgressCounts = new();
|
||||
public string GiverNpcId;
|
||||
}
|
||||
|
||||
// ─── Achievements ─────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user