fix: 存档功能修理

This commit is contained in:
2026-07-27 16:00:30 +08:00
parent 3e6fab9762
commit 31e6ae87be
7 changed files with 278 additions and 181 deletions
+2
View File
@@ -234,6 +234,8 @@ P7 横切
`interaction` / `save_on_exit` 登记退出 checkpoint,节点完成并直接结束本轮 Dialogue 后写 state-only 档。
- `anchor.nodeName` 对所有档位都保存触发节点;`anchor.startDialogueOnRestore` 独立决定读档时是否启动 Yarn。
- 退出 checkpoint 在触发时冻结 node / YarnProject / TalkScene / Dialogue run`DialogEnd` 初始化期间使用 scoped interaction lock,下一帧捕获完成后才开放玩法输入。
- Dialogue run / flow revision / current node / runner 停止状态的稳定性检查只用于 `DialogueExit`。退出节点后若开始任何新 Yarn 节点(含 detour、`no_save`、jump 目标或新 Dialogue),取消该节点末尾存档。
- `NodeEnter``ExplicitCommand` 不因下一帧发生节点流转而取消;它们使用触发时冻结的 node / YarnProject / TalkScene 生成 anchor。连续产生的有效请求全部进入串行队列,后产生的 checkpoint 最终覆盖自动档。
- **Fresh 进入 vs detour 续跑**`SavePointEvaluator``yarnProjectId` 维护 `InProgressNodes`;节点尚未 `onNodeComplete` 时再次 `onNodeStart`Yarn detour 返回父节点)→ `DetourResume`,跳过自动存。`OnNodeComplete` 移出集合;切换 YarnProject / `StopDialog` 重置;读档 anchor 重进仅 `OnRestoreEnterNode` 标记,不写盘。
- **tag 规则**`hub` / `linear` / `content` 默认进入时保存;`interaction` 默认 Dialogue 退出时保存;
`save_on_exit` 可覆盖其他一级类型;`no_save` 禁止保存,并与上述退出语义冲突。