166 lines
5.0 KiB
TypeScript
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)
|
|
}
|
|
}
|