feat(mission): 更新关卡显示与回合提示逻辑

1. 调整关卡UI文本格式,添加回合数显示并缩小字体
2. 新增监听回合进度数据源,更新注释描述
3. 重构阶段过滤逻辑,补充PrepareStart/End阶段的排除
4. 将回合开始提示移至BattleStart阶段播放,优化提示显示时机
5. 修正回合管理相关注释与逻辑,移除旧的首回合延迟提示
This commit is contained in:
panFD
2026-09-12 23:27:24 +08:00
parent 10e2c0d817
commit 328f6c83f3
2 changed files with 16 additions and 19 deletions

View File

@@ -5746,10 +5746,10 @@
"b": 255,
"a": 255
},
"_string": "第 {{0}}-{{1}}关",
"_string": "第 {{0}} - {{1}}关 {{2}}回合",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 26,
"_actualFontSize": 17,
"_fontSize": 25,
"_fontFamily": "Arial",
"_lineHeight": 40,
@@ -5809,7 +5809,8 @@
"labelType": "cc.Label",
"watchPathArr": [
"data.stage_progress.chapter ",
"data.stage_progress.stage"
"data.stage_progress.stage",
"data.stage_progress.section"
],
"_id": ""
},

View File

@@ -457,9 +457,12 @@ export class MissionComp extends CCComp {
const phaseName = MissionComp.PhaseNameMap[targetPhase] || "未知";
// 播放状态切换提示栏动效(过滤掉 None、Prepare 准备阶段、Battle 战斗中阶段)
// 播放状态切换提示栏动效(过滤掉 None、Prepare/PrepareStart/PrepareEnd 准备阶段、Battle 战斗中阶段;
// 回合提示统一由 BattleStart 的"第 X 回合开始"承担,准备相关阶段不弹提示)
if (targetPhase !== MissionPhase.None &&
targetPhase !== MissionPhase.Prepare &&
targetPhase !== MissionPhase.PrepareStart &&
targetPhase !== MissionPhase.PrepareEnd &&
targetPhase !== MissionPhase.Battle) {
this.playTooltipAnim(phaseName);
}
@@ -502,6 +505,8 @@ export class MissionComp extends CCComp {
case MissionPhase.BattleStart:
// 触发战斗开始技能(fstart)
this.triggerHeroBattleSkills();
// 回合开始提示:"第 X 回合开始"(准备阶段不显示,战斗开始才播)
this.playTooltipAnim(`第 ${this.currentWave} 回合开始`);
// Boss 预警:Boss 同步场立即登场(eta=0)
if (this.isBossWave) {
oops.message.dispatchEvent(GameEvent.BossWarning, {
@@ -924,12 +929,12 @@ export class MissionComp extends CCComp {
// ======================== 回合管理 ========================
/**
* 新一节事件回调(SectionStart 时由 MissionMonComp 派发,wave = 小节号):
* 1. 更新当前节号与 HUD 进度。
* 2. 按节配置判定是否含 Boss(驱动 Boss 预警)。
* 3. 首回合延迟播放回合提示。
* 新一回合事件回调(SectionStart 时由 MissionMonComp 派发,wave = 回合号):
* 1. 更新当前回合号与 HUD 进度。
* 2. 按回合配置判定是否含 Boss(驱动 Boss 预警)。
*
* 注意:节间推进在 autoNextPhase(PrepareStart) 完成,此处仅同步显示与 Boss 预警。
* 注意:回合推进在 autoNextPhase(PrepareStart) 完成,此处仅同步显示与 Boss 预警;
* "第 X 回合开始"提示改在 BattleStart(战斗开始)时播放,准备阶段不显示。
*
* @param event 事件名
* @param data { wave: number, bossWave?: boolean }
@@ -938,18 +943,9 @@ export class MissionComp extends CCComp {
const wave = Number(data?.wave ?? 0);
if (wave <= 0) return;
// Boss 预警:本节怪物列表含 Boss 时置位(Boss 节 Boss 延迟登场,BattleStart 时发预警)
// Boss 预警:本回合怪物列表含 Boss 时置位(Boss 回合 Boss 延迟登场,BattleStart 时发预警)
this.isBossWave = !!data?.bossWave;
if (this.currentPhase === MissionPhase.Prepare) {
// 首回合:延迟一点播放提示,避免被开始游戏的 loading 遮挡
this.scheduleOnce(() => {
if (this.currentPhase === MissionPhase.Prepare) {
this.playTooltipAnim(`第 ${wave} 节`);
}
}, 0.5);
}
this.currentWave = wave;
smc.vmdata.mission_data.level = wave;
// 金币改为怪物死亡掉落(见 HeroAtkSystem),不再每回合固定发放