import MyModel from "../core/MyModel"; import SKUIUtil from "../gear_2.3.4/util/SKUIUtil"; import FGUtil, { TipAlign } from "../gear_2.3.4/fgui/FGUtil"; import SKSocket from "../gear_2.3.4/net/SKSocket"; import GameModel from "../core/GameModel"; import MsgAlert from "../game/msg/MsgAlert"; import SKDataUtil from "../gear_2.3.4/util/SKDataUtil"; import ItemUtil from "../core/ItemUtil"; import FuturePannel from "./FuturePannel"; import DestinyPannel from "./DestinyPannel"; import CarePannel from "./CarePannel"; import Baby from "./Baby"; export default class BabyMgrPannel extends cc.Component { static shared = new BabyMgrPannel(); main: fgui.GComponent; curBaby: Baby show() { this.loadUI(); } hide() { FGUtil.dispose(this.main); this.unscheduleAllCallbacks() this.main = null; } loadUI() { FGUtil.dispose(this.main); this.unscheduleAllCallbacks() this.main = fgui.UIPackage.createObject("main_ui", "home_yangyu").asCom; FGUtil.root().addChild(this.main); FGUtil.fitScreen(this.main); this.initUI(); this.initEvent(); // this.loadHorseSkill(); } resetBattleSkill() { FGUtil.getControl(this.main, "n8/ctrl_lv").selectedIndex = 0 FGUtil.getControl(this.main, "n9/ctrl_lv").selectedIndex = 0 FGUtil.getControl(this.main, "n10/ctrl_lv").selectedIndex = 0 FGUtil.getControl(this.main, "n8/ctrl_show").selectedIndex = 0 FGUtil.getControl(this.main, "n9/ctrl_show").selectedIndex = 0 FGUtil.getControl(this.main, "n10/ctrl_show").selectedIndex = 0 FGUtil.getLoader(this.main, "n8/icon").url = "" FGUtil.getLoader(this.main, "n9/icon").url = "" FGUtil.getLoader(this.main, "n10/icon").url = "" FGUtil.getButton(this.main, "n8").clearClick() FGUtil.getButton(this.main, "n9").clearClick() FGUtil.getButton(this.main, "n10").clearClick() } initUI() { let name = GameModel.player.name this.main.getChild("txt_name").asLabel.text = `${name}的寶貝` this.main.getChild("txt_age").asLabel.text = `${name}的寶貝` this.main.getChild("close").onClick(this.hide, this) this.main.getChild("btn_jieju").onClick(this.onClickFuture, this) this.main.getChild("btn_mingpan").onClick(this.onClickDestiny, this) this.main.getChild("btn_peiyang").onClick(this.onClickCare, this) this.main.getChild("btnFight").onClick(this.onClickFight, this) this.main.getChild("btn_item").onClick(this.onClickDaoju, this) this.main.getChild("btn_back").onClick(this.onClickBack, this) // btnFight let list_attr1 = FGUtil.getList(this.main, "list_attr1") list_attr1.itemRenderer = this.initAttr1Item.bind(this); list_attr1.numItems = 7 let list_attr2 = FGUtil.getList(this.main, "list_attr2") list_attr2.itemRenderer = this.initAttr2Item.bind(this); list_attr2.numItems = 3 FGUtil.getObject(this.main, "txt_pingjia").asLabel.text = "0" let list = this.main.getChild("n34").asList list.on(fgui.Event.CLICK_ITEM, this.onClickItem, this) this.onBabyBattle() let list_goods = this.main.getChild("n43").asList list_goods.itemRenderer = this.initGoodsItem.bind(this); list_goods.numItems = 4 list_goods.on(fgui.Event.CLICK_ITEM, this.onClickGoodsItem, this) } initAttr1Item(idx, item: fairygui.GObject) { let list = ["氣質", "耐力", "智力", "內力", "名氣", "道德", "叛逆"] let attrList = ["qualitites", "endurance", "intelligence", "internalForce", "fame", "moral", "rebel"] FGUtil.getObject(item.asCom, "attrname").asLabel.text = list[idx] if (this.curBaby != null) { FGUtil.getObject(item.asCom, "attrvalue").asLabel.text = this.curBaby.Attr[attrList[idx]] FGUtil.getObject(this.main, "txt_pingjia").asLabel.text = this.curBaby.GetScore().toString() } } initAttr2Item(idx, item: fairygui.GObject) { let list = ["親密", "孝心", "溫飽"] let attrList = ["bosom", "filial", "foodFull"] FGUtil.getObject(item.asCom, "attrname").asLabel.text = list[idx] if (this.curBaby != null) { FGUtil.getObject(item.asCom, "attrvalue").asLabel.text = this.curBaby.Attr[attrList[idx]] FGUtil.getObject(this.main, "txt_pingjia").asLabel.text = this.curBaby.GetScore().toString() } } resetAttrList() { if (this.main == null) return let list_attr1 = FGUtil.getList(this.main, "list_attr1") for (let index = 0; index < 7; index++) { this.initAttr1Item(index, list_attr1.getChildAt(index)) } let list_attr2 = FGUtil.getList(this.main, "list_attr2") for (let index = 0; index < 3; index++) { this.initAttr2Item(index, list_attr2.getChildAt(index)) } } resetBabyGoodsList() { if (this.main == null) return let list_goods = this.main.getChild("n43").asList for (let index = 0; index < list_goods.numItems; index++) { this.initGoodsItem(index, list_goods.getChildAt(index)) } } initGoodsItem(idx, item: fairygui.GObject) { let itemId = 9650 + idx var itemInfo = ItemUtil.getItemData(itemId); let cnt = ItemUtil.getBagItemCount(itemId) let info = SKDataUtil.clone(itemInfo) info.undel = true info.operateid = this.curBaby.ID item.data = info FGUtil.getControl(item.asCom, "selected").selectedIndex = 0 FGUtil.getLoader(item.asCom, "icon").url = `ui://main_ui/${itemInfo.icon}`; FGUtil.getTextField(item.asCom, "title").text = cnt.toString(); } onClickGoodsItem(item: fgui.GObject) { let list_goods = this.main.getChild("n43").asList for (let index = 0; index < list_goods.numItems; index++) { this.initGoodsItem(index, list_goods.getChildAt(index)) } FGUtil.getControl(item.asCom, "selected").selectedIndex = 1 cc.loader.loadRes("Prefabs/BagItemDetail", cc.Prefab, (err, prefab: any) => { if (err) { console.warn(err); return } let detail = cc.instantiate(prefab); detail.parent = this.main.node; // detail.setPosition(this.bagPanel.width / 2, -this.bagPanel.height / 2) detail.name = 'BagItemDetail'; detail.getComponent('BagItemDetail').loadInfo(item.data); detail.getComponent('BagItemDetail').showOperation(); }) } onClickItem(item: fgui.GObject) { let data = item.data let ctl = this.main.getController("ctrl_isfight") ctl.selectedIndex = 0 if (data.Attr.battle) { ctl.selectedIndex = 1 } this.main.getController("ctrl_hasChild").selectedIndex = (data.Attr.sex + 1) this.curBaby = data this.resetAttrList() this.resetBattleSkill() for (let index = 0; index < this.curBaby.BattleSkillList.length; index++) { let id = this.curBaby.BattleSkillList[index]; let skill = this.curBaby.GetSkillByID(id) this.onSkillBattle(skill) } let rateCtl = FGUtil.getControl(this.main, "ctrl_pingjia") rateCtl.selectedIndex = 0 if (this.curBaby != null) { rateCtl.selectedIndex = 1 let score = this.curBaby.GetScore() if (score == 3000) { rateCtl.selectedIndex = 2 } if (score == 4000) { rateCtl.selectedIndex = 3 } if (score == 5000) { rateCtl.selectedIndex = 4 } } } onBabyBattle(baby?) { if (this.main == null) return let babys = MyModel.shared.BabyList.BabyList let list = this.main.getChild("n34").asList for (let index = 0; index < list.numChildren; index++) { let child = list._children[index]; if (index >= babys.length) { child.visible = false } else { let baby = babys[index] child.data = baby let icon = baby.GetIconID() FGUtil.getLoader(child.asCom, "icon").url = `ui://main_ui/${icon}` let name = GameModel.player.name child.asCom.getChild("title").asLabel.text = `${name}的寶貝` let ctl = child.asCom.getController("isShow") ctl.selectedIndex = 0 if (baby.Attr.battle) { ctl.selectedIndex = 1 list.selectedIndex = index this.onClickItem(child) } } } if (baby != null) { MsgAlert.addMsg("出戰成功!") } } GetSkillLevelBuff(skill){ let level = skill.level if (level > 100) level = 100 return level * 0.6 / 100 } onClickBattleSkill(skill){ let desp = fgui.UIPackage.createObject("main_ui", "home_skill_desp").asCom; FGUtil.root().addChild(desp); let ctl = FGUtil.getControl(desp, "skillCom/skill/ctrl_lv") ctl.selectedIndex = 0 let luck = this.GetSkillLevelBuff(skill) if(skill.level >= 100){ luck += this.curBaby.GetSkillBuff() } let luckStr = (luck * 100).toFixed(2) let color = SKUIUtil.colorOfString("#FFFFFF"); let text = cc.js.formatStr(skill.desp, luckStr) if (skill.grade == "尋常"){ let hurt = 500 * skill.level if (hurt > 50000){ hurt = 50000 } text = cc.js.formatStr(skill.desp, luckStr, hurt) color = SKUIUtil.colorOfString("#00FFFF"); ctl.selectedIndex = 1 } if(skill.grade == "超凡"){ let defense = 1000 * skill.level if (defense > 100000){ defense = 100000 } text = cc.js.formatStr(skill.desp, luckStr, defense) color = SKUIUtil.colorOfString("#EB48FA"); ctl.selectedIndex = 2 } if(skill.grade == "天命" || skill.grade == "合體"){ color = SKUIUtil.colorOfString("#F39700"); ctl.selectedIndex = 3 } let Label = FGUtil.getObject(desp, "skillCom/txt_more2").asTextField Label.color = color FGUtil.getObject(desp, "skillCom/name_tf").asLabel.text = skill.name FGUtil.getObject(desp, "skillCom/txt_desp1").asLabel.text = text FGUtil.getObject(desp, "skillCom/txt_more2").asLabel.text = skill.grade FGUtil.getObject(desp, "skillCom/txt_more3").asLabel.text = skill.class FGUtil.getLoader(desp, "skillCom/skill/icon").url = `ui://main_ui/${skill.id}` FGUtil.getComponent(desp, "mask").onClick(() => { desp.dispose() }) } onSkillBattle(skill) { let index = 3 let path = "n8" if (skill.type == "太陰") { index = 2 path = "n9" } else if (skill.type == "合體") { index = 1 path = "n10" } let obj = FGUtil.getObject(this.main, path) FGUtil.getControl(obj.asCom, "ctrl_show").selectedIndex = 1 FGUtil.getLoader(obj.asCom, "icon").url = `ui://main_ui/${skill.id}` obj.asButton.onClick(this.onClickBattleSkill.bind(this, skill)) let ctrl = FGUtil.getControl(obj.asCom, "ctrl_lv") ctrl.selectedIndex = 0 if(skill.grade == "尋常"){ ctrl.selectedIndex = 1 } if(skill.grade == "超凡"){ ctrl.selectedIndex = 2 } if(skill.grade == "天命"){ ctrl.selectedIndex = 3 } } onClickFight() { GameModel.send("c2s_babyBattle", { id: this.curBaby.ID }); } onClickDaoju() { FGUtil.getControl(this.main, "ctrl_showitem").selectedIndex = 1 } onClickBack() { FGUtil.getControl(this.main, "ctrl_showitem").selectedIndex = 0 } onClickFuture() { FuturePannel.shared.show() } onClickDestiny() { if (this.main == null) return DestinyPannel.shared.show(this.curBaby) } onClickCare() { if (this.main == null) return CarePannel.shared.show(this.curBaby) } initEvent() { } }