Files
heros/assets/script/game/map/HCardUICom.ts
2025-08-20 23:27:32 +08:00

98 lines
4.3 KiB
TypeScript

import { _decorator, Animation, AnimationClip, Component, Label, Node, resources } from 'cc';
import { HeroInfo, HType } from '../common/config/heroSet';
import { smc } from '../common/SingletonModuleComp';
import { oops } from 'db://oops-framework/core/Oops';
import { UIID } from '../common/config/GameUIConfig';
import { GameSet, HeroConSet, QualitySet } from '../common/config/BoxSet';
import { HttpReturn } from 'db://oops-framework/libs/network/HttpRequest';
import { GameEvent } from '../common/config/GameEvent';
const { ccclass, property } = _decorator;
@ccclass('HCardUICom')
export class HCardUICom extends Component {
h_uuid:number=0
type:number=0
slot:number=0
start() {
console.log("[HCardUICom]:start")
}
protected onLoad(): void {
oops.message.on(GameEvent.UpdateHero,this.to_update_hero,this)
}
update(deltaTime: number) {
}
to_update_hero(){
this.update_data(this.h_uuid,{type:this.type})
}
update_data(uuid:number,args:any){
this.type=args.type
if(args.slot) this.slot=args.slot
console.log("[HCardUICom]:update_data",uuid,this.type,this.slot,args)
this.h_uuid=uuid
this.node.getChildByName("in_fight").active=this.check_in_fight(uuid)
let hero_data = HeroInfo[uuid]
let hero= this.node.getChildByName("hero")
let anm_path=hero_data.path
resources.load("game/heros/hero/"+anm_path+"/idle", AnimationClip, (err, clip) => {
hero.getComponent(Animation).addClip(clip);
hero.getComponent(Animation).play("idle");
});
this.node.getChildByName("name").getComponent(Label).string=hero_data.name
let lv=smc.heros[uuid]?.lv??0
this.node.getChildByName("luck").active=lv==0
this.node.getChildByName("lv").getChildByName("num").getComponent(Label).string=lv > 0 ? lv.toString() : ""
this.node.getChildByName("lv").active=lv > 0
// this.node.getChildByName("slv").getChildByName("lv1").active=smc.heros[uuid].slv>=1
// this.node.getChildByName("slv").getChildByName("lv2").active=smc.heros[uuid].slv>=2
// this.node.getChildByName("slv").getChildByName("lv3").active=smc.heros[uuid].slv>=3
// this.node.getChildByName("slv").getChildByName("lv4").active=smc.heros[uuid].slv>=4
// this.node.getChildByName("slv").getChildByName("lv5").active=smc.heros[uuid].slv>=5
this.node.getChildByName("g").active=hero_data.quality==QualitySet.GREEN
this.node.getChildByName("gg").active=hero_data.quality==QualitySet.GREEN
this.node.getChildByName("b").active=hero_data.quality==QualitySet.BLUE
this.node.getChildByName("bg").active=hero_data.quality==QualitySet.BLUE
this.node.getChildByName("p").active=hero_data.quality==QualitySet.PURPLE
this.node.getChildByName("pg").active=hero_data.quality==QualitySet.PURPLE
this.node.getChildByName("y").active=hero_data.quality==QualitySet.ORANGE
this.node.getChildByName("yg").active=hero_data.quality==QualitySet.ORANGE
this.node.getChildByName("type").getChildByName("w").active=hero_data.type==HType.warrior
this.node.getChildByName("type").getChildByName("r").active=hero_data.type==HType.remote
this.node.getChildByName("type").getChildByName("m").active=hero_data.type==HType.mage
}
do_click(){
switch(this.type){
case HeroConSet.INFO:
oops.gui.open(UIID.HeroInfo,this.h_uuid)
break
case HeroConSet.SELECT:
if(oops.gui.has(UIID.HeroSelect)) {
this.check_in_slot(this.h_uuid)
smc.setFightHero(this.slot,this.h_uuid,true)
oops.message.dispatchEvent(GameEvent.UpdateFightHero)
oops.gui.remove(UIID.HeroSelect)
}
break
}
}
check_in_slot(uuid:number){ //如果英雄在出战位,则移除久的出战位
let heros=smc.fight_heros
for(let i=0;i<GameSet.HERO_NUM;i++){
if(heros[i]==uuid) {
smc.setFightHero(i,0,true)
}
}
}
check_in_fight(uuid:number){
let heros=smc.fight_heros
for(let i=0;i<GameSet.HERO_NUM;i++){
if(heros[i]==uuid) return true
}
return false
}
}