From 1fc91dce21643bb81631044c48e6191b5a9c332e Mon Sep 17 00:00:00 2001 From: panFD Date: Fri, 11 Sep 2026 23:10:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(victoryComp):=20=E4=BF=AE=E5=A4=8D=E5=B0=8F?= =?UTF-8?q?=E8=8A=82=E8=83=9C=E5=88=A9=E9=80=80=E5=87=BA=E4=B8=8D=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E8=BF=9B=E5=BA=A6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整小节胜利时的退出按钮逻辑,手动推进并保存关卡进度,避免玩家退出后进度丢失,同时不触发自动进入下一场战斗的流程。 --- assets/script/game/map/VictoryComp.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/assets/script/game/map/VictoryComp.ts b/assets/script/game/map/VictoryComp.ts index ae124894..c26d05b6 100644 --- a/assets/script/game/map/VictoryComp.ts +++ b/assets/script/game/map/VictoryComp.ts @@ -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)