SamsaraGame/assets/Script/ts/visitingPrison.ts
2025-04-24 17:03:28 +08:00

166 lines
5.0 KiB
TypeScript

import SKUIUtil from "./gear_2.3.4/util/SKUIUtil";
import FGUtil from "./gear_2.3.4/fgui/FGUtil";
import GameUtil from "./core/GameUtil";
import ItemUtil from "./core/ItemUtil";
import GameModel from "./core/GameModel";
import SKDataUtil from "./gear_2.3.4/util/SKDataUtil";
import FGAlert from "./gear_2.3.4/fgui/FGAlert";
import MsgAlert from "./game/msg/MsgAlert";
const { ccclass, property } = cc._decorator;
@ccclass
export default class visitingPrison extends cc.Component {
/**
* 探監單例實例
*/
public static Instance: visitingPrison = null;
/**
* 面板
*/
visitingPrisonPanel: fgui.GComponent = null;
/**
*
*/
UIRoleNode: cc.Node = null;
/**
* 被關押列表
*/
prisonList: any = null;
selectListIdx: number = -1;
/**
* 需要加載的預製體
*/
prefabObject: any = {};
onLoad() {
if (visitingPrison.Instance === null) {
visitingPrison.Instance = this;
// this.loadPrefab();
} else {
this.destroy();
return;
}
}
/**
* 加載預製體
*/
loadPrefab() {
// 加載所需的預製體
var prefabList = [
// { url: "Prefabs/UIRole", name: "UIRole" }
]
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;
}
})
}
}
openVisitingPrisonPanel() {
if (!SKUIUtil.isFGUIValid(this.visitingPrisonPanel)) {
this.visitingPrisonPanel = FGUtil.create("main_ui", "visitingPrison_panel");
FGUtil.root().addChild(this.visitingPrisonPanel);
this.visitingPrisonPanel.makeFullScreen();
}
// 註冊關閉事件
var mask = FGUtil.getComponent(this.visitingPrisonPanel, "mask");
var close = FGUtil.getButton(this.visitingPrisonPanel, "alert/closeBtn");
this.pushCloseEvent(mask, this.visitingPrisonPanel);
this.pushCloseEvent(close, this.visitingPrisonPanel);
FGUtil.getButton(this.visitingPrisonPanel, "alert/baoshi").onClick(this.bailPrison, this);
FGUtil.getButton(this.visitingPrisonPanel, "alert/jieyu").onClick(() => {
MsgAlert.addMsg("暫未開放");
});
var list = FGUtil.getList(this.visitingPrisonPanel, "alert/prisonList");
list.itemRenderer = this.initItem.bind(this);
// 虛擬列表
list.setVirtual();
GameModel.send("c2s_days_prisoner", {
roleid: GameModel.player.roleid
})
}
refreshList() {
var list = FGUtil.getList(this.visitingPrisonPanel, "alert/prisonList");
list.numItems = this.prisonList.length;
}
initItem(idx, obj: fairygui.GObject) {
var item = obj.asCom;
var info = this.prisonList[idx];
FGUtil.getTextField(item, "name").text = info[1];
FGUtil.getRichTextField(item, "level").text = info[2]
FGUtil.getTextField(item, "race").text = info[3]
FGUtil.getTextField(item, "time").text = `${Math.floor(parseInt(info[4]) / 60)}分鐘`;
FGUtil.getControl(item, "bg").selectedIndex = idx % 2 == 1 ? 0 : 1;
FGUtil.getControl(item, "selected").selectedIndex = this.selectListIdx == idx ? 1 : 0;
item.node["idx"] = idx;
item.onClick(this.selectedPrisonItem, this);
}
selectedPrisonItem(e: Event, id: number = 0) {
if (!SKUIUtil.isFGUIValid(this.visitingPrisonPanel)) return;
var idx;
if (e.target && SKDataUtil.hasProperty(e.target, "idx"))
idx = e.target["idx"];
else
idx = id;
this.selectListIdx = idx;
this.refreshList();
}
bailPrison() {
if (this.prisonList.length < 1) {
MsgAlert.addMsg("當前沒有關押犯人!");
return;
}
if (this.selectListIdx < 0) {
MsgAlert.addMsg("請點擊犯人!");
return;
}
let prisonInfo = this.prisonList[this.selectListIdx];
FGAlert.show(`確定花費[color=#ff0000]660000仙玉[/color]保釋犯人${prisonInfo[1]}?`, () => {
FGAlert.hide();
}, () => {
FGAlert.hide();
GameModel.send("c2s_days_bail", {
roleid: GameModel.player.roleid, // 當前角色編號
bailRoleid: Number(prisonInfo[0])
})
})
}
/**
*
* @param race 種族
* @param sex 性別
*/
getRaceSex(race, sex) {
return `${ItemUtil.sexName[sex - 1]}${ItemUtil.raceName[race - 1]}`;
}
/**
* 添加關閉事件
*/
pushCloseEvent(item: fairygui.GComponent, target: fairygui.GComponent, call: Function = null) {
if (!item) {
console.error("未找到節點");
return;
}
item.clearClick();
item.onClick(() => {
call && call()
FGUtil.dispose(target);
target = null;
}, this)
}
}