本次提交完成了全项目范围内术语的统一替换,将原本指代卡牌品质/等级的card_lv字段全部重命名为rarity,对齐了设计文档中的命名规范,避免了术语混淆: 1. 更新了所有配置文件、组件类、数据结构中的字段定义 2. 同步修改了注释、文档说明中的相关表述 3. 修正了英雄、技能、装备卡牌的品质显示逻辑 4. 调整了背景颜色切换、属性计算等相关业务逻辑
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { instantiate, Prefab, Vec3, Node } from "cc";
|
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
import { smc } from "../common/SingletonModuleComp";
|
|
import { EquipBoxComp } from "./EquipBoxComp";
|
|
|
|
/** EBox 实体:负责技能卡效果节点创建、初始化与销毁流程 */
|
|
@ecs.register(`EBox`)
|
|
export class EBox extends ecs.Entity {
|
|
/** 技能盒子视图和逻辑组件引用 */
|
|
SkillBox!: EquipBoxComp;
|
|
|
|
protected init() {
|
|
// 如果有纯逻辑数据组件可以在这里 addComponents
|
|
}
|
|
|
|
/** 销毁实体并释放视图节点,防止残留 */
|
|
destroy(): void {
|
|
const view = this.get(EquipBoxComp);
|
|
if (view && view.node && view.node.isValid) {
|
|
view.node.destroy();
|
|
}
|
|
|
|
this.remove(EquipBoxComp);
|
|
super.destroy();
|
|
}
|
|
|
|
/**
|
|
* 加载并初始化技能盒子
|
|
* 1) 创建节点并挂到 parent 下(未传时默认 SKILL 层)
|
|
* 2) 初始化表现与属性数据
|
|
*/
|
|
load(uuid: number, rarity: number, pos: Vec3, prefab: Prefab, parent?: Node): Node {
|
|
let node = instantiate(prefab);
|
|
|
|
// 默认挂到实体显示层 SKILL 节点下
|
|
if (!parent) {
|
|
let scene = smc.map.MapView.scene;
|
|
parent = scene.entityLayer!.node!.getChildByName("SKILL") ?? undefined;
|
|
}
|
|
if (parent) {
|
|
node.parent = parent;
|
|
}
|
|
node.setPosition(pos);
|
|
|
|
// 获取并注册组件
|
|
let eboxComp = node.getComponent(EquipBoxComp) || node.addComponent(EquipBoxComp);
|
|
this.add(eboxComp);
|
|
|
|
// 初始化业务逻辑
|
|
eboxComp.init(uuid, rarity);
|
|
|
|
return node;
|
|
}
|
|
}
|