refactor(LangUtil): 重构多语言工具类,新增枚举类型安全前缀

1. 将原有的字符串LangPrefix类型改为枚举类型,避免硬编码字符串错误
2. 更新所有使用处的调用方式,统一使用LangPrefix枚举来传入多语言前缀
3. 移除VictoryComp中硬编码的成就描述拼接逻辑,改用lang/langf方法获取多语言文本
4. 注释暂时不需要渲染的分数进度条代码
This commit is contained in:
panw
2026-05-15 15:44:43 +08:00
parent 4f8a955506
commit a6915fdf00
5 changed files with 1712 additions and 1521 deletions

View File

@@ -2,21 +2,7 @@
* @file VictoryComp.ts
* @description 战斗结算弹窗组件UI 视图层)
*
* 职责:
* 1. 在战斗结束时弹出,展示结算信息(得分、奖励)。
* 2. 根据传入参数判断是否可复活,切换"下一步"或"复活"按钮。
* 3. 计算单局总分并存储到 smc.vmdata.scores.score。
* 4. 提供"重新开始"和"退出"两个操作入口。
*
* 关键设计:
* - onAdded(args) 接收战斗结果参数victory / rewards / game_data / can_revive
* - calculateTotalScore() 根据 ScoreWeights 配置加权计算各项得分。
* - restart() 和 victory_end() 通过分发 MissionEnd / MissionStart 事件驱动游戏状态切换。
*
* 依赖:
* - smc.vmdata.scores —— 全局战斗统计数据
* - ScoreWeightsScoreSet—— 得分权重配置
* - GameEvent.MissionEnd / MissionStart —— 游戏生命周期事件
*/
import { _decorator, instantiate, Label ,Prefab,Node, Sprite, Animation, AnimationClip, resources, UITransform, Widget, ProgressBar } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
@@ -24,15 +10,12 @@ import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/modu
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { smc } from "../common/SingletonModuleComp";
import { GameEvent } from "../common/config/GameEvent";
import { it } from "node:test";
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
import { HeroViewComp } from "../hero/HeroViewComp";
import { FacSet } from "../common/config/GameSet";
import { Attrs } from "../common/config/HeroAttrs";
import { HeroInfo } from "../common/config/heroSet";
import { CKind } from "../common/config/CardSet";
import { ScoreWeights } from "../common/config/ScoreSet";
import { HighlightSet, HighlightType, HighlightLevel } from "../common/config/HighlightSet";
import { LangPrefix, lang, langf } from "../common/LangUtil";
import { mLogger } from "../common/Logger";
import { UIID } from "../common/config/GameUIConfig";
@@ -505,11 +488,11 @@ export class VictoryComp extends CCComp {
};
// TODO: 进度条的最大值可按设计期望自行调整,目前为占位预估值
renderDim(this.combat_node, s.score_combat, 3000);
renderDim(this.output_node, s.score_output, 3000);
renderDim(this.defense_node, s.score_defense, 1500);
renderDim(this.build_node, s.score_build, 1000);
renderDim(this.efficiency_node, s.score_efficiency, 200);
// renderDim(this.combat_node, s.score_combat, 3000);
// renderDim(this.output_node, s.score_output, 3000);
// renderDim(this.defense_node, s.score_defense, 1500);
// renderDim(this.build_node, s.score_build, 1000);
// renderDim(this.efficiency_node, s.score_efficiency, 200);
// 渲染成就亮点标签
this.renderHighlights();
@@ -536,15 +519,14 @@ export class VictoryComp extends CCComp {
const lab = tagNode.getComponent(Label) || tagNode.getChildByName("label")?.getComponent(Label);
if (lab) {
// 获取主配置和等级配置
const typeConfig = HighlightSet[item.type];
const levelConfig = item.config;
// 格式化描述(替换占位符 {0} 为实际所需达成的阈值或当前值)
let descStr = levelConfig.desc.replace("{0}", levelConfig.threshold.toString());
// 显示:[图标] 称号 (描述)
lab.string = `${typeConfig.icon} ${levelConfig.title} (${descStr})`;
const uuid = levelConfig.uuid;
const titleStr = lang(LangPrefix.hl_title, uuid);
const descStr = langf(LangPrefix.hl_desc, uuid, levelConfig.threshold);
lab.string = `${typeConfig.icon} ${titleStr} (${descStr})`;
}
this.highlights_container.addChild(tagNode);
});