import { _decorator, Color, Label, Sprite } 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 { HeroHomeComp } from "../map/HeroHomeComp"; import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; import { smc } from "../common/SingletonModuleComp"; import { HeroInfo } from "../common/config/heroSet"; import { ColorSet } from "../common/config/BoxSet"; const { ccclass, property } = _decorator; /** 视图层对象 */ @ccclass('HeroCardComp') @ecs.register('HeroCardComp', false) export class HeroCardComp extends CCComp { hcc_home: HeroHomeComp = null!; h_uuid: number = 0; onLoad() { oops.message.on("hero_card_show_info", this.check_show, this); oops.message.on("hero_card_update_info", this.update_data, this); } /** 视图层逻辑代码分离演示 */ start() { this.hcc_home=this.node.parent.parent.parent.parent.getComponent(HeroHomeComp); // console.log("hero_card hcc_home",this.hcc_home) } show_info(){ this.hcc_home.hero_show(this.h_uuid) oops.message.dispatchEvent("hero_card_show_info",{uuid:this.h_uuid}) } check_show(event: string, args: any){ // console.log("hero_card check_show",args) this.show_bg(false) if(args.uuid==this.h_uuid){ this.show_bg(true) } } show_bg(val:boolean){ this.node.getChildByName("show").active=val } update_data(){ let slv = this.node.getChildByName("slv") this.node.getChildByName("lv").getComponent(Label).string=smc.heros[this.h_uuid].lv.toString()+"级" if(smc.heros[this.h_uuid].slv==0){ this.node.getChildByName("lock").active=true slv.active=false }else{ slv.active=true this.node.getChildByName("lock").active=false slv.getChildByName("slv").getComponent(Label).string=smc.heros[this.h_uuid].slv.toString() } switch(HeroInfo[this.h_uuid].quality){ case 1: this.node.getChildByName("bg").getComponent(Sprite).color= new Color().fromHEX(ColorSet["BLUE"]); break; case 2: this.node.getChildByName("bg").getComponent(Sprite).color= new Color().fromHEX(ColorSet["YELLOW"]); break; case 3: this.node.getChildByName("bg").getComponent(Sprite).color= new Color().fromHEX(ColorSet["RED"]); break; } } /** 全局消息逻辑处理 */ // private onHandler(event: string, args: any) { // switch (event) { // case ModuleEvent.Cmd: // break; // } // } /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ reset() { this.node.destroy(); } }