import { _decorator,Button,EventHandler,EventTouch,instantiate,Label,NodeEventType,Prefab,resources,Sprite,SpriteAtlas,tween,UITransform,v3 } 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 { HeroInfo, HeroList } from "../common/config/heroSet"; import { HeroCard } from "../hero/HeroCard"; import { smc } from "../common/SingletonModuleComp"; import { UIID } from "../common/config/GameUIConfig"; import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; import { Items } from "../common/config/Items"; import { SkillSet } from "../common/config/SkillSet"; import { LvUp, SlvUp, UpGold } from "../common/config/RoleSet"; const { ccclass, property } = _decorator; /** 视图层对象 */ @ccclass('HeroHomeComp') @ecs.register('HeroHome', false) export class HeroHomeComp extends CCComp { h_uuid:number=0 role:any=null hero:any=null protected onLoad(): void { } start() { // this.load_talents() console.log("hero_home start") this.h_uuid=9001 this.hero_show(this.h_uuid) this.loads() } loads(){ let heros:any=HeroList let hc:number =HeroList.length let parent= this.node.getChildByName("heros").getChildByName("view").getChildByName("content") parent.getComponent(UITransform).width=hc*150 for (let i = 0; i < hc; i++) { let hcc =ecs.getEntity(HeroCard) hcc.load(HeroList[i],parent) } } hero_show(uuid:number) { this.h_uuid=uuid this.role=smc.heros[uuid] this.hero=HeroInfo[uuid] let tal=this.node.getChildByName("sk").getChildByName("tal"); let sk_node= this.node.getChildByName("sk"); let skill = SkillSet[this.hero.sk2[0]] var sk_path = "game/skills/skill_icon" var icon_path = "game/heros/herois" resources.load(icon_path, SpriteAtlas, (err: any, atlas) => { const sprite = this.node.getChildByName("hero").getChildByName("icon").getComponent(Sprite); sprite.spriteFrame = atlas.getSpriteFrame(this.hero.path); }); resources.load(sk_path, SpriteAtlas, (err: any, atlas) => { const sprite = sk_node.getChildByName("skicon").getChildByName("icon").getComponent(Sprite); sprite.spriteFrame = atlas.getSpriteFrame(skill.path); }); sk_node.getChildByName("name").getComponent(Label).string = skill.name; sk_node.getChildByName("info").getComponent(Label).string = skill.info; this.node.getChildByName("name").getChildByName("value").getComponent(Label).string=this.hero.name tal.getChildByName("slv1").getChildByName("val").getComponent(Label).string = this.hero.tals[0] tal.getChildByName("slv2").getChildByName("val").getComponent(Label).string = this.hero.tals[1] tal.getChildByName("slv3").getChildByName("val").getComponent(Label).string = this.hero.tals[2] tal.getChildByName("slv4").getChildByName("val").getComponent(Label).string = this.hero.tals[3] tal.getChildByName("slv5").getChildByName("val").getComponent(Label).string = this.hero.tals[4] this.update_data() } update_data(){ let slv_node=this.node.getChildByName("name").getChildByName("slv"); let lvup=this.node.getChildByName("lvup"); let slvup=this.node.getChildByName("slvup"); let attr = this.node.getChildByName("attr"); let attr2 = this.node.getChildByName("attr2").getChildByName("other"); this.node.getChildByName("name").getChildByName("lv").getComponent(Label).string = this.role.lv.toString()+"级"; if( this.role.slv>=1) {slv_node.getChildByName("s1").active=true}else{slv_node.getChildByName("s1").active=false}; if( this.role.slv>=2) {slv_node.getChildByName("s2").active=true}else{slv_node.getChildByName("s2").active=false}; if( this.role.slv>=3) {slv_node.getChildByName("s3").active=true}else{slv_node.getChildByName("s3").active=false}; if( this.role.slv>=4) {slv_node.getChildByName("s4").active=true}else{slv_node.getChildByName("s4").active=false}; if( this.role.slv>=5) {slv_node.getChildByName("s5").active=true}else{slv_node.getChildByName("s5").active=false}; lvup.getChildByName("gold").getChildByName("need").getComponent(Label).string = (UpGold.LvUp*this.role.lv).toString() lvup.getChildByName("item").getChildByName("need").getComponent(Label).string = ((LvUp[0]+this.hero.lvexp)*this.role.lv).toString() lvup.getChildByName("info").getChildByName("ap").getComponent(Label).string = "+"+this.hero.ap_up lvup.getChildByName("info").getChildByName("def").getComponent(Label).string = "+"+this.hero.def_up lvup.getChildByName("info").getChildByName("hp").getComponent(Label).string = "+"+this.hero.hp_up slvup.getChildByName("gold").getChildByName("need").getComponent(Label).string = (UpGold.SlvUp*(this.role.slv+1)).toString() slvup.getChildByName("cost").getChildByName("need").getComponent(Label).string = ((SlvUp[1]+this.hero.slvexp)*1).toString() slvup.getChildByName("cost").getChildByName("num").getComponent(Label).string = smc.heros[this.h_uuid].num.toString() //todo cost icon 需要通过预制体进行变更 slvup.getChildByName("info").getChildByName("ap").getComponent(Label).string = "+"+this.hero.sap_up+"%" slvup.getChildByName("info").getChildByName("def").getComponent(Label).string = "+"+this.hero.sdef_up+"%" slvup.getChildByName("info").getChildByName("hp").getComponent(Label).string = "+"+this.hero.shp_up+"%" if( this.role.slv==5) { slvup.getChildByName("btned").active=true }else{ slvup.getChildByName("btned").active=false }; attr.getChildByName("ap").getChildByName("val").getComponent(Label).string = ((this.hero.ap+this.hero.ap_up* this.role.lv)*(1+this.hero.sap_up/100*this.role.slv)).toFixed(0).toString() attr.getChildByName("hp").getChildByName("val").getComponent(Label).string = ((this.hero.hp+this.hero.hp_up* this.role.lv)*(1+this.hero.shp_up/100*this.role.slv)).toFixed(0).toString() attr.getChildByName("def").getChildByName("val").getComponent(Label).string = ((this.hero.ap+this.hero.ap_up* this.role.lv)*(1+this.hero.sdef_up/100*this.role.slv)).toFixed(0).toString() attr.getChildByName("acd").getChildByName("val").getComponent(Label).string = this.hero.a_cd attr.getChildByName("speed").getChildByName("val").getComponent(Label).string = this.hero.speed attr.getChildByName("dis").getChildByName("val").getComponent(Label).string = this.hero.dis attr2.getChildByName("crit").getChildByName("val").getComponent(Label).string = this.hero.crit+"%" attr2.getChildByName("ca").getChildByName("val").getComponent(Label).string = (150+this.hero.crit_add).toString()+"%" attr2.getChildByName("ucr").getChildByName("val").getComponent(Label).string = this.hero.ucr+"%" attr2.getChildByName("dod").getChildByName("val").getComponent(Label).string = this.hero.dodge+"%" attr2.getChildByName("aexp").getChildByName("val").getComponent(Label).string = this.hero.aexp attr2.getChildByName("uaexp").getChildByName("val").getComponent(Label).string = this.hero.uaexp attr2.getChildByName("cexp").getChildByName("val").getComponent(Label).string = this.hero.cexp attr2.getChildByName("doexp").getChildByName("val").getComponent(Label).string = this.hero.doexp attr2.getChildByName("dexp").getChildByName("val").getComponent(Label).string = this.hero.dexp oops.message.dispatchEvent("hero_card_update_info",{uuid:this.h_uuid}) } lv_selcet(e:any,val:any){ let active = this.node.getChildByName("menu").getChildByName("active") tween(active).to(0.1,{position:v3(val,0)}).start() let hero = this.node.getChildByName("hero") let attr = this.node.getChildByName("attr") let attr2 = this.node.getChildByName("attr2") let info = this.node.getChildByName("info") let lvup = this.node.getChildByName("lvup") let sk = this.node.getChildByName("sk") let slvup = this.node.getChildByName("slvup") if(val < 0){ tween(hero).to(0.2,{position:v3(0,hero.position.y)}).start() tween(attr).to(0.2,{position:v3(0,attr.position.y)}).start() tween(attr2).to(0.2,{position:v3(0,attr2.position.y)}).start() tween(lvup).to(0.2,{position:v3(0,lvup.position.y)}).start() tween(sk).to(0.2,{position:v3(1000,sk.position.y)}).start() tween(slvup).to(0.2,{position:v3(1000,slvup.position.y)}).start() }else{ tween(hero).to(0.2,{position:v3(-1000,hero.position.y)}).start() tween(attr).to(0.2,{position:v3(-1000,attr.position.y)}).start() tween(attr2).to(0.2,{position:v3(-1000,attr2.position.y)}).start() tween(lvup).to(0.2,{position:v3(-1000,lvup.position.y)}).start() tween(sk).to(0.2,{position:v3(0,sk.position.y)}).start() tween(slvup).to(0.2,{position:v3(0,slvup.position.y)}).start() } } lv_up(){ if(smc.vmdata.items[1001].num < ((LvUp[0]+this.hero.lvexp)*this.role.lv)||smc.vmdata.items[9001].num < (UpGold.LvUp*this.role.lv)){ oops.gui.toast("资源不足,升级失败"); return } smc.vmdata.items[1001].num -= ((LvUp[0]+this.hero.lvexp)*this.role.lv) smc.vmdata.items[9001].num -= (UpGold.LvUp*this.role.lv) this.role.lv++ this.update_data() } slv_up(){ if(this.role.slv>=5){ oops.gui.toast("已经满星,升星失败"); return } if(smc.heros[this.h_uuid].num < SlvUp[this.role.slv]*(1+this.role.slv)||smc.vmdata.items[9001].num < (UpGold.SlvUp*(this.role.slv+1))){ oops.gui.toast("资源不足,升星失败"); return } smc.heros[this.h_uuid].num -= SlvUp[this.role.slv]*(1+this.role.slv) smc.vmdata.items[9001].num -= (UpGold.SlvUp*(this.role.slv+1)) this.role.slv++ this.update_data() } item_show(e:any,val:any){ oops.gui.open(UIID.ItemInfo, Items[val]); } reset() { this.node.destroy(); } }