234 lines
8.0 KiB
TypeScript
234 lines
8.0 KiB
TypeScript
|
|
||
|
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;
|
||
|
}
|
||
|
}
|