feat(map): add equip card box system
新增了场上装备卡槽管理系统,包含以下内容: 1. 新增EBox实体类,负责装备卡节点的创建、初始化和销毁流程 2. 新增EquipBoxComp组件,实现单个装备卡的视图显示和逻辑控制 3. 新增MissEquipComp组件,管理10个装备卡槽位的分配、回收和重排 4. 完整实现了装备卡的触发逻辑,支持即时、定时、事件型等多种技能类型
This commit is contained in:
52
assets/script/game/map/EBox.ts
Normal file
52
assets/script/game/map/EBox.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
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) 创建节点并挂到 SKILL 层
|
||||
* 2) 初始化表现与属性数据
|
||||
*/
|
||||
load(uuid: number, card_lv: number, pos: Vec3, prefab: Prefab): Node {
|
||||
let node = instantiate(prefab);
|
||||
let scene = smc.map.MapView.scene;
|
||||
|
||||
// 统一挂到实体显示层 SKILL 节点下
|
||||
let parent = scene.entityLayer!.node!.getChildByName("SKILL");
|
||||
if (parent) {
|
||||
node.parent = parent;
|
||||
}
|
||||
node.setPosition(pos);
|
||||
|
||||
// 获取并注册组件
|
||||
let eboxComp = node.getComponent(EquipBoxComp) || node.addComponent(EquipBoxComp);
|
||||
this.add(eboxComp);
|
||||
|
||||
// 初始化业务逻辑
|
||||
eboxComp.init(uuid, card_lv);
|
||||
|
||||
return node;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user