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) } }