import FGUtil from "./gear_2.3.4/fgui/FGUtil"; import GameUtil from "./core/GameUtil"; import SKDataUtil from "./gear_2.3.4/util/SKDataUtil"; import SkillUtil from "./game/skill/core/SkillUtil"; import GameModel from "./core/GameModel"; import ItemUtil from "../ts/core/ItemUtil"; import RecastAlert from "../ts/game/baldric/RecastAlert"; import MyModel from "../ts/core/MyModel"; import Horse from "../ts/horse/Horse"; import SkillBase, { ESkillQuality } from "./game/skill/core/SkillBase"; /**角色彈窗信息 */ export default class RoleInfoAlert { static Instance = new RoleInfoAlert(); main: fgui.GComponent; menuMain: fgui.GComponent; /** * 需要加載的預製體 */ prefabObject: any = {}; /**裝備列表 */ equiplist: fgui.GList; petList: fgui.GList; /** * 加載預製體 */ loadPrefab() { // 加載所需的預製體 var prefabList = [ { url: "Prefabs/EquipItemDetail", name: "EquipItemDetail" }, { url: "Prefabs/SummonDetail", name: "SummonDetail" }, ] this.prefabObject = {} for (let item of prefabList) { cc.loader.loadRes(item.url, cc.Prefab, (err, prefab) => { if (err) console.warn(err); else { this.prefabObject[item.name] = prefab; } }) } } static show(info: any) { this.Instance.show(info); } show(info: any) { console.log("RoleInfoAlert.......................") FGUtil.dispose(this.main); this.main = FGUtil.create("main_ui", "playerInfo_panel"); let alert = FGUtil.getComponent(this.main, "alert"); FGUtil.getComponent(this.main, "mask").onClick(this.hide, this);//點擊遮罩方法 FGUtil.getTextField(alert, "name").text = info.name; FGUtil.getRichTextField(alert, "level").text = GameUtil.getReliveRichText(info.relive, info.level); FGUtil.getTextField(alert, "id").text = `編號:${info.roleid}`; FGUtil.getTextField(alert, "gang").text = `幫派:${info.bangname}`; FGUtil.getButton(alert, "equipScore").title = `裝備評價\n${info.score}`; this.equiplist = FGUtil.getButton(alert, "equiplist").asList; FGUtil.getButton(alert, "equipScore").onClick(() => { console.log("equipScoreequipScoreequipScoreequipScoreequipScoreequipScore") this.onClickequipScore(info); }, this); this.petList = FGUtil.getButton(alert, "petList").asList; FGUtil.getButton(alert, "petHorseScore").onClick(() => { console.log("petHorseScorepetHorseScorepetHorseScorepetHorseScorepetHorseScorepetHorseScore") this.onClickpet(info); }, this); var infoCom = FGUtil.getComponent(alert, "infoCom"); FGUtil.getRichTextField(infoCom, "level").text = GameUtil.getReliveRichText(info.relive, info.level); FGUtil.getTextField(infoCom, "gangxiulian").text = `幫派修煉:${info.xiulevel}`; FGUtil.getTextField(infoCom, "tianyance").text = `天演策:${info.oflevel}級`; FGUtil.getTextField(infoCom, "gangxiulian").text = `五行修煉:${info.fplevel}`; FGUtil.getTextField(infoCom, "gold").text = `金:${info.jin}`; FGUtil.getTextField(infoCom, "wood").text = `木:${info.mu}`; FGUtil.getTextField(infoCom, "water").text = `水:${info.shui}`; FGUtil.getTextField(infoCom, "fire").text = `火:${info.huo}`; FGUtil.getTextField(infoCom, "soil").text = `土:${info.tu}`; var skillInfo = SKDataUtil.jsonBy(info.skill); var idx = 0; for (let key in skillInfo) { idx++; var item = FGUtil.getComponent(infoCom, `skill${idx}`); item.asProgress.value = skillInfo[key]; FGUtil.getLoader(item, "icon").texture = SkillUtil.getSkillIcon(key); } FGUtil.root().addChild(this.main); this.main.makeFullScreen(); var self = this; cc.loader.loadRes("Prefabs/temp/EffRole", cc.Prefab, (err, prefab) => { if (err) return; var role = cc.instantiate(prefab); var roleInfo = { resid: info.resid, weapon: info.weapon, color1: info.color1, color2: info.color2, wingId: SKDataUtil.findByDict(GameModel.game_conf.wing, "resid", info.wingId, "id", 0) } var lg = role.getComponent("EffRole") lg.setInfo(roleInfo); if (info.effectid > 0) lg.changeBodyEff(info.effectid) var pNode = FGUtil.getComponent(self.main, "alert").node role.scale = 0.8; role.parent = pNode role.x = 110 role.y = -120 }) } /**點擊裝備評價 */ onClickequipScore(data: any) { this.equiplist.removeChildrenToPool(); //移除列表 let date = SKDataUtil.jsonBy(data.currentEquips); for (let k in date) { let info = date[k]; cc.log(info.EName); let cell: fgui.GComponent; cell = this.equiplist.addItemFromPool().asButton; FGUtil.getControl(cell, "isWear").selectedIndex = 1 FGUtil.getLoader(cell, "icon").url = `ui://main_ui/${info.Shape}`; // FGUtil.getTextField(cell, "title").text = `${info.EName}`; cell.node["data"] = info; cell.onClick(() => { this.onClickCell(info) }, this); } } onClickpet(data: any) { this.petList.removeChildrenToPool(); //移除列表 let date = SKDataUtil.jsonBy(data.petInfo); for (let k in date) { let info = date[k]; cc.log(info.name); let cell = null; cell = this.petList.addItemFromPool().asButton; FGUtil.getControl(cell, "isWear").selectedIndex = 1 FGUtil.getLoader(cell, "icon").url = `ui://main_ui/${info.resid}`; // FGUtil.getTextField(cell, "title").text = info.name; cell.node["data"] = info; cell.onClick(() => { this.onClickpetCell(info) }, this); } } onClickpetCell(info: any) { info.PetName = info.name if (this.prefabObject["SummonDetail"] == null) { cc.loader.loadRes("Prefabs/SummonDetail", cc.Prefab, (err, prefab) => { if (err) console.warn(err); else { this.prefabObject["SummonDetail"] = prefab; } }) return; } let SummonDetail = cc.instantiate(this.prefabObject["SummonDetail"]); SummonDetail.x = RoleInfoAlert.Instance.main.node.width / 2 SummonDetail.y = -RoleInfoAlert.Instance.main.node.height / 2 SummonDetail.parent = RoleInfoAlert.Instance.main.node // SummonDetail.setPosition(100,0) if (SummonDetail != null) { SummonDetail.getComponent('SummonDetail').loadInfo(info); } } onClickCell(info: any) { if (ItemUtil.isBaldric(info.EIndex)) { if (ItemUtil.isShowDetail()) { ItemUtil.showAccessDetail(info, false); } if (RecastAlert.shared.isShow()) { RecastAlert.shared.refresh(info); } return; } if (this.prefabObject["EquipItemDetail"] == null) { cc.loader.loadRes("Prefabs/EquipItemDetail", cc.Prefab, (err, prefab) => { if (err) console.warn(err); else { this.prefabObject["EquipItemDetail"] = prefab; } }) return; } var detailnade: cc.Node = cc.instantiate(this.prefabObject["EquipItemDetail"]); detailnade.x = RoleInfoAlert.Instance.main.node.width / 2 detailnade.y = -RoleInfoAlert.Instance.main.node.height / 2 detailnade.parent = RoleInfoAlert.Instance.main.node if (detailnade != null) { detailnade.getComponent("EquipItemDetail").loadInfo(info); } } hide() { FGUtil.dispose(this.main); this.main = null; } }