SamsaraGame/assets/Script/ts/RoleInfoAlert.ts

234 lines
8.0 KiB
TypeScript
Raw Permalink Normal View History

2025-04-24 17:03:28 +08:00
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;
}
}