Files
heros/assets/script/game/map/HeroHomeComp.ts

285 lines
17 KiB
TypeScript

import { _decorator,Button,color,EventHandler,EventTouch,instantiate,Label,NodeEventType,Prefab,ProgressBar,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 { getUpChipByLv, getUpGoldByRange, LvUp, SlvUp, UpGold } from "../common/config/RoleSet";
import { HChipComp } from "../hero/HChipComp";
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
gold_need:number=9999
chip_need:number=9999
slv:number=0
protected onLoad(): void {
}
start() {
// this.load_talents()
console.log("hero_home start")
// this.h_uuid=5001
// this.hero_show(this.h_uuid)
this.loads()
this.node.getChildByName("show").active=false
}
loads(){
let hc:number =HeroList.length
let parent= this.node.getChildByName("heros").getChildByName("view").getChildByName("content")
parent.getComponent(UITransform).setContentSize(720,Math.ceil(HeroList.length/4)*200)
console.log("parent",parent)
for (let i = 0; i < hc; i++) {
if (HeroInfo[HeroList[i]].quality==3) {
let hcc =ecs.getEntity<HeroCard>(HeroCard)
hcc.load(HeroList[i],parent)
}
}
for (let i = 0; i < hc; i++) {
if (HeroInfo[HeroList[i]].quality==2) {
let hcc =ecs.getEntity<HeroCard>(HeroCard)
hcc.load(HeroList[i],parent)
}
}
for (let i = 0; i < hc; i++) {
if (HeroInfo[HeroList[i]].quality==1) {
let hcc =ecs.getEntity<HeroCard>(HeroCard)
hcc.load(HeroList[i],parent)
}
}
}
hero_show(uuid:number) {
this.node.getChildByName("show").active=true
this.h_uuid=uuid
this.hero=HeroInfo[uuid]
console.log("hero_show",uuid)
let skill1 = SkillSet[this.hero.sk1[0]]
let skill2 = SkillSet[this.hero.sk2[0]]
var sk_path = "game/skills/skill_icon"
// var icon_path = "game/heros/herois"
this.slv = Math.floor((smc.heros[uuid].lv) / 5);
this.node.getChildByName("show").getChildByName("name").getChildByName("value").getComponent(Label).string=this.hero.name
this.node.getChildByName("show").getChildByName("name").getChildByName("g1").active=HeroInfo[uuid].quality==1
this.node.getChildByName("show").getChildByName("name").getChildByName("g2").active=HeroInfo[uuid].quality==2
this.node.getChildByName("show").getChildByName("name").getChildByName("g3").active=HeroInfo[uuid].quality==3
this.clear_hero()
this.call_hero(uuid)
// resources.load(icon_path, SpriteAtlas, (err: any, atlas) => {
// const sprite = this.node.getChildByName("show").getChildByName("hero").getChildByName("icon").getComponent(Sprite);
// sprite.spriteFrame = atlas.getSpriteFrame(this.hero.path);
// });
resources.load(sk_path, SpriteAtlas, (err: any, atlas) => {
const sprite = this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk").getChildByName("skicon").getChildByName("Mask").getChildByName("icon").getComponent(Sprite);
sprite.spriteFrame = atlas.getSpriteFrame(skill1.path);
});
this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk").getChildByName("name").getComponent(Label).string = skill1.name;
this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk").getChildByName("info").getComponent(Label).string = skill1.info;
resources.load(sk_path, SpriteAtlas, (err: any, atlas) => {
const sprite = this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk2").getChildByName("skicon").getChildByName("Mask").getChildByName("icon").getComponent(Sprite);
sprite.spriteFrame = atlas.getSpriteFrame(skill2.path);
});
this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk2").getChildByName("name").getComponent(Label).string = skill2.name;
this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk2").getChildByName("info").getComponent(Label).string = skill2.info;
// 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(){
this.slv = Math.floor((smc.heros[this.h_uuid].lv) / 5);
this.gold_need=(getUpGoldByRange(smc.heros[this.h_uuid].lv)*smc.heros[this.h_uuid].lv)
this.chip_need=getUpChipByLv(smc.heros[this.h_uuid].lv)-this.hero.lvexp
// let slv_node=this.node.getChildByName("show").getChildByName("name").getChildByName("slv");
let lvup=this.node.getChildByName("show").getChildByName("lvup");
// let slvup=this.node.getChildByName("show").getChildByName("slvup");
let attr = this.node.getChildByName("show").getChildByName("attr");
let attr2 = this.node.getChildByName("show").getChildByName("attr2").getChildByName("other");
this.node.getChildByName("show").getChildByName("name").getChildByName("lv").getComponent(Label).string = smc.heros[this.h_uuid].lv.toString()+"级";
// slv_node.getChildByName("slv").getComponent(Label).string = smc.heros[uuid].slv.toString();
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("q1").active = this.hero.quality == 1;
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("q2").active = this.hero.quality == 2;
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("q3").active = this.hero.quality == 3;
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("k1").active = this.hero.kind == 1;
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("k2").active = this.hero.kind == 2;
this.node.getChildByName("show").getChildByName("name").getChildByName("quality").getChildByName("k3").active = this.hero.kind == 3;
let lvnum=smc.heros[this.h_uuid].num
// lvup.getChildByName("gold").getChildByName("need").getComponent(Label).string = (UpGold.LvUp*smc.heros[uuid].lv).toString()
lvup.getChildByName("item").getChildByName("chip").getChildByName("need").getComponent(Label).string = this.chip_need.toString()
lvup.getChildByName("item").getChildByName("btn").getChildByName("gold").getChildByName("need").getComponent(Label).string = this.gold_need.toString()
lvup.getChildByName("item").getChildByName("chip").getChildByName("num").getComponent(Label).string = lvnum.toString()
if( lvnum >=this.chip_need) {
lvup.getChildByName("item").getChildByName("chip").getChildByName("num").getComponent(Label).color = color(0,255,0);
}else{
lvup.getChildByName("item").getChildByName("chip").getChildByName("num").getComponent(Label).color = color(255,0,0);
}
lvup.getChildByName("up").active=lvnum >= this.chip_need
lvup.getChildByName("item").getChildByName("chip").getChildByName("bar").getComponent(ProgressBar).progress = lvnum/this.chip_need
// 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
// lvup.getChildByName("info2").getChildByName("ap").getComponent(Label).string = "+"+this.hero.sap_up+"%"
// lvup.getChildByName("info2").getChildByName("def").getComponent(Label).string = "+"+this.hero.sdef_up+"%"
// lvup.getChildByName("info2").getChildByName("hp").getComponent(Label).string = "+"+this.hero.shp_up+"%"
// lvup.getChildByName("item").getChildByName("btn").getChildByName("bar").getComponent(ProgressBar).progress = smc.vmdata.exp.num/((LvUp[0]+this.hero.lvexp)*smc.heros[uuid].lv)
// slvup.getChildByName("gold").getChildByName("btn").getChildByName("need").getComponent(Label).string = (UpGold.SlvUp*(smc.heros[uuid].slv+1)).toString()
// let sthis.chip_need=HeroInfo[this.h_uuid].slvexp
// let slvnum=smc.heros[this.h_uuid].num
// slvup.getChildByName("up").active=slvnum>=sthis.chip_need
// if( slvnum>=sthis.chip_need) {
// slvup.getChildByName("cost").getChildByName("btn").getChildByName("num").getComponent(Label).color = color(0,255,0);
// }else{
// slvup.getChildByName("cost").getChildByName("btn").getChildByName("num").getComponent(Label).color = color(255,0,0);
// }
// slvup.getChildByName("cost").getChildByName("btn").getChildByName("need").getComponent(Label).string = sthis.chip_need.toString()
// slvup.getChildByName("cost").getChildByName("btn").getChildByName("num").getComponent(Label).string = slvnum.toString()
// slvup.getChildByName("cost").getChildByName("btn").getChildByName("bar").getComponent(ProgressBar).progress = slvnum/sthis.chip_need
// let hchipcomp= slvup.getChildByName("cost").getChildByName("btn").getChildByName("hchip").getComponent(HChipComp)
// hchipcomp.update_data(this.h_uuid,0)
// if( smc.heros[uuid].slv==5) {
// slvup.getChildByName("btned").active=true
// }else{
// slvup.getChildByName("btned").active=false
// };
// if( smc.heros[uuid].slv==0) {
// this.node.getChildByName("show").getChildByName("call").getChildByName("Node").getChildByName("cost").getChildByName("need").getComponent(Label).string = ((SlvUp[smc.heros[uuid].slv]-HeroInfo[this.h_uuid].slvexp)*(1+smc.heros[uuid].slv)).toString()
// this.node.getChildByName("show").getChildByName("call").getChildByName("Node").getChildByName("cost").getChildByName("num").getComponent(Label).string = smc.heros[this.h_uuid].num.toString()
// this.node.getChildByName("show").getChildByName("call").getChildByName("Node").getChildByName("cost").getChildByName("bar").getComponent(ProgressBar).progress = smc.heros[this.h_uuid].num/((SlvUp[smc.heros[uuid].slv]-HeroInfo[this.h_uuid].slvexp)*(1+smc.heros[uuid].slv))
// let hchipcomp= this.node.getChildByName("show").getChildByName("call").getChildByName("Node").getChildByName("cost").getChildByName("hchip").getComponent(HChipComp)
// hchipcomp.update_data(this.h_uuid,0)
// this.node.getChildByName("show").getChildByName("call").active=true
// }else{
// this.node.getChildByName("show").getChildByName("call").active=false
// };
attr.getChildByName("ap").getChildByName("val").getComponent(Label).string = ((this.hero.ap+this.hero.ap_up* smc.heros[this.h_uuid].lv)*(1+this.hero.sap_up/100*this.slv)).toFixed(0).toString()
attr.getChildByName("hp").getChildByName("val").getComponent(Label).string = ((this.hero.hp+this.hero.hp_up* smc.heros[this.h_uuid].lv)*(1+this.hero.shp_up/100*this.slv)).toFixed(0).toString()
attr.getChildByName("def").getChildByName("val").getComponent(Label).string = ((this.hero.ap+this.hero.def_up* smc.heros[this.h_uuid].lv)*(1+this.hero.sdef_up/100*this.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("show").getChildByName("menu").getChildByName("active")
tween(active).to(0.1,{position:v3(val,0)}).start()
let hero = this.node.getChildByName("show").getChildByName("hero")
let attr = this.node.getChildByName("show").getChildByName("attr")
let attr2 = this.node.getChildByName("show").getChildByName("attr2")
let info = this.node.getChildByName("show").getChildByName("info")
let lvup = this.node.getChildByName("show").getChildByName("lvup")
let sk = this.node.getChildByName("show").getChildByName("bottom").getChildByName("sk")
let slvup = this.node.getChildByName("show").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()
}
}
call_hero(uuid:number){
var path = "game/heros/uiheros/"+HeroInfo[uuid].path;
var prefab: Prefab = oops.res.get(path, Prefab)!;
var node = instantiate(prefab);
node.parent = this.node.getChildByName("show").getChildByName("hero").getChildByName("node")
}
clear_hero(){
this.node.getChildByName("show").getChildByName("hero").getChildByName("node").destroyAllChildren()
}
pre_hero(){
let hi= HeroList.indexOf(this.h_uuid)
if(hi==0){
oops.gui.toast("已经是第一个英雄");
return
}
this.h_uuid=HeroList[hi-1]
this.hero_show(this.h_uuid)
}
next_hero(){
let hi= HeroList.indexOf(this.h_uuid)
if(hi==HeroList.length-1){
oops.gui.toast("已经是最后一个英雄");
return
}
this.h_uuid=HeroList[hi+1]
this.hero_show(this.h_uuid)
}
// lv_up(){
// if(smc.vmdata.exp.num < ((this.hero.lvexp)*smc.heros[uuid].lv)){
// oops.gui.toast("资源不足,升级失败");
// return
// }
// smc.vmdata.exp.num -= ((this.hero.lvexp)*smc.heros[uuid].lv)
// smc.heros[uuid].lv++
// this.update_data()
// }
lv_up(){
// if(smc.heros[uuid].slv>=5){
// oops.gui.toast("已经满星,升阶失败");
// return
// }
if(smc.heros[this.h_uuid].num < this.chip_need){
oops.gui.toast("碎片不足,升级失败");
return
}
if(smc.vmdata.gold.num < this.gold_need){
oops.gui.toast("金币不足,升级失败");
return
}
smc.heros[this.h_uuid].num -= this.chip_need
smc.vmdata.gold.num -= (this.gold_need)
smc.heros[this.h_uuid].lv++
this.update_data()
}
item_show(e:any,val:any){
oops.gui.open(UIID.ItemInfo, {uuid:val,type:0});
}
close_show(){
this.node.getChildByName("show").active=false
}
reset() {
this.node.destroy();
}
}