1. 新增HeroBoxComp.ts及对应meta配置文件 2. 修改ebox.prefab的spriteFrame为null,适配新组件 3. 组件实现英雄卡基础渲染框架与事件回调逻辑
76 lines
2.9 KiB
TypeScript
76 lines
2.9 KiB
TypeScript
/**
|
||
* @file HeroBoxComp.ts
|
||
* @description 英雄卡池单个卡槽组件(UI 视图层 + 购买/召唤逻辑)
|
||
*
|
||
* 职责:
|
||
* 1. 渲染单个英雄卡的显示信息(名称、等级、描述、图标、费用),
|
||
* 展示方式与 SCardComp 一致(图集静态图标 + ★等级 + 描述词条)。
|
||
* 同时支持动态升级卡(SpecialUpgrade + target_hero_eid)按英雄卡样式渲染。
|
||
* 2. 处理购买点击 → UseHeroCard 上限校验(guard) → 扣费 → 派发 CallHero 召唤英雄。
|
||
* 特殊卡(升级/刷新)则派发 UseSpecialCard。
|
||
* 3. 使用成功后派发 CardUsed 事件,通知 MissionCardComp 刷新英雄卡池。
|
||
*
|
||
* 与 SCardComp 的差异:
|
||
* - 数据源为 HeroInfo(heroSet),而非 SkillCardList / SkillSet。
|
||
* - 购买前需通过 GameEvent.UseHeroCard 做英雄数量上限校验。
|
||
* - 英雄卡效果事件为 GameEvent.CallHero,而非 UseSkillCard。
|
||
*/
|
||
import { mLogger } from "../common/Logger";
|
||
import { _decorator, Node, Sprite, Label, NodeEventType, Vec3, Tween, tween, UIOpacity, SpriteFrame, resources, AnimationClip } from "cc";
|
||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||
import { CardConfig, CardType } from "../common/config/CardSet";
|
||
import { HeroInfo } from "../common/config/heroSet";
|
||
import { oops } from "db://oops-framework/core/Oops";
|
||
import { GameEvent } from "../common/config/GameEvent";
|
||
import { smc } from "../common/SingletonModuleComp";
|
||
import { UIID } from "../common/config/GameUIConfig";
|
||
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
|
||
import { FieldSkillType } from "../common/config/SkillSet";
|
||
import { FieldSkillHelper } from "../hero/FieldSkillHelper";
|
||
import { MissionEconomy } from "./MissionEconomy";
|
||
|
||
const { ccclass, property } = _decorator;
|
||
|
||
/**
|
||
* HeroBoxComp —— 英雄卡池单个英雄卡项
|
||
*
|
||
* 由 MissionCardComp.cacheCardComps() 实例化。
|
||
* 以图标 + 名称 + 描述词条 + 购买按钮的形式呈现。
|
||
*/
|
||
@ccclass('HeroBoxComp')
|
||
@ecs.register('HeroBoxComp', false)
|
||
export class HeroBoxComp extends CCComp {
|
||
private debugMode: boolean = true;
|
||
|
||
// ======================== 编辑器绑定节点 ========================
|
||
|
||
/** 英雄图标节点 */
|
||
@property({ type: Node })
|
||
private icon_node: Node = null;
|
||
/** 背景节点 */
|
||
@property({ type: Node })
|
||
private bg_node: Node = null;
|
||
/** 英雄名称 */
|
||
@property(Label)
|
||
private name_label: Label = null;
|
||
/** 等级标签 */
|
||
@property(Label)
|
||
private level_label: Label = null;
|
||
|
||
|
||
|
||
// ======================== 生命周期 ========================
|
||
|
||
onLoad() {
|
||
|
||
}
|
||
|
||
/** ECS 组件移除时销毁节点 */
|
||
reset() {
|
||
if (this.node && this.node.isValid) {
|
||
this.node.destroy();
|
||
}
|
||
}
|
||
}
|