fix(victoryComp): 修复小节胜利退出不保存进度的问题

调整小节胜利时的退出按钮逻辑,手动推进并保存关卡进度,避免玩家退出后进度丢失,同时不触发自动进入下一场战斗的流程。
This commit is contained in:
panFD
2026-09-11 23:10:58 +08:00
parent aafbd6eff9
commit 1fc91dce21

View File

@@ -842,15 +842,26 @@ export class VictoryComp extends CCComp {
/**
* 确认按钮点击(代码绑定,btns/btn):
* - 小节胜利(section)→ 派发 NextSection 推进下一节(修复:之前直接 MissionEnd 导致关卡未推进)
* - 小节胜利(section)→ 推进存档到下一节并保存 → 派发 MissionEnd → 关闭结算弹窗
* - 末关通关(final) → 清理数据 → 派发 MissionEnd → 关闭结算弹窗
* - 失败(defeat) → 清理数据 → 派发 MissionEnd → 关闭结算弹窗
*
* Why: 小节胜利点"退出"既要保存进度(避免下次重玩卡在原节),
* 又不能像"下一节"按钮那样直接开战(玩家已选退出,不再继续本局战斗)。
*/
victory_end() {
if (this.settleType === "section") {
// 小节胜利:与"下一节"按钮行为一致,避免胜利后点退出直接结束关卡
oops.message.dispatchEvent(GameEvent.NextSection);
return;
// 小节胜利:手动推进 section 到下一节并保存存档,避免点退出后进度丢失。
// 注:MissionComp 的 NextSection 会进入战斗流程,这里不走该事件以避免自动开战。
const cur = (smc.data.stage_progress ?? { chapter: 1, stage: 1, section: 1 }) as { chapter: number; stage: number; section: number };
// 当前节已胜利,写入下一节作为待挑战存档;若已是末节(section=10),则不做 section 推进
if (cur.section < 10) {
smc.updateStageProgress({
chapter: cur.chapter,
stage: cur.stage,
section: cur.section + 1,
});
}
}
this.clear_data()
oops.message.dispatchEvent(GameEvent.MissionEnd)