import AudioUtil from "../core/AudioUtil"; import GameModel from "../core/GameModel"; import FGUtil from "../gear_2.3.4/fgui/FGUtil"; import SKUIUtil from "../gear_2.3.4/util/SKUIUtil"; import SKDataUtil from "../gear_2.3.4/util/SKDataUtil"; import SKLocalUtil from "../gear_2.3.4/util/SKLocalUtil"; const ZhenFaItem_Count = (5) const {ccclass, property} = cc._decorator; @ccclass export default class tuJian extends cc.Component { /** * 信物面板單例實例 */ public static Instance: tuJian = null; /** * 信物面板 */ tuJian: fgui.GComponent = null; /** * 需要加載的預製體 */ prefabObject: any = {}; /** * 設置當前頁碼 */ private page_index:number = 0 /** * 代理 */ delegte: any = null /** * 是否打開該界面 */ bOpen:boolean = false /** * 等級 */ private lv:number = 0 onLoad() { this.page_index = 0 this.lv = 10 this.bOpen = false if (tuJian.Instance === null) { tuJian.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; } }) } } setDelegte(delegte:any) { this.delegte = delegte } openTujian() { if (!this.tuJian || (this.tuJian && !this.tuJian.node && !SKUIUtil.isValid(this.tuJian.node))) { this.tuJian = FGUtil.create("main_ui", "bagua_collect_panel"); FGUtil.root().addChild(this.tuJian); FGUtil.fitScreen(this.tuJian) } this.page_index = 0 this.lv = this.delegte.lv this.bOpen = true FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 0 let btnClose = FGUtil.getComponent(this.tuJian, "close") this.pushCloseEvent(btnClose, this.tuJian, () => { this.bOpen = false AudioUtil.playCloseAudio() // this.destroy() }); FGUtil.getButton(this.tuJian, "btn_type1").onClick(this.clickZhenFa1, this); FGUtil.getButton(this.tuJian, "btn_type2").onClick(this.clickZhenFa2, this); FGUtil.getButton(this.tuJian, "btn_type3").onClick(this.clickZhenFa3, this); FGUtil.getButton(this.tuJian, "btn_type4").onClick(this.clickZhenFa4, this); FGUtil.getButton(this.tuJian, "btn_type5").onClick(this.clickZhenFa5, this); FGUtil.getButton(this.tuJian, "btn_lv10").onClick(() => { this.onDownLv(10) }, this); FGUtil.getButton(this.tuJian, "btn_lv20").onClick(() => { this.onDownLv(20) }, this); FGUtil.getButton(this.tuJian, "btn_lv30").onClick(() => { this.onDownLv(30) }, this); FGUtil.getButton(this.tuJian, "btn_lv40").onClick(() => { this.onDownLv(40) }, this); FGUtil.getButton(this.tuJian, "btn_lv50").onClick(() => { this.onDownLv(100) }, this); FGUtil.getControl(this.tuJian, "ctrl_lvSelected").selectedIndex = this.getLevelIndex() // 設置物品列表初始化方法 var itemList = FGUtil.getList(this.tuJian, "list_item"); itemList.itemRenderer = this.initTujianItem.bind(this); // 虛擬列表 itemList.setVirtual(); FGUtil.getButton(this.tuJian, "rect_touch").onClick(() => { FGUtil.getControl(this.tuJian, "ctrl_fold").selectedIndex = 0; },this) FGUtil.getButton(this.tuJian, "btn_changeLv").onClick(this.clickChangeLv, this); this.refreshTujianPanel() this.onDownLv(10) } getLevelIndex() { const lv_ary = [10,20,30,40,100] for (var i = 0;i < lv_ary.length;++i) { if (lv_ary[i] == this.lv) { return i } } return 0 } updateUI() { if (!this.bOpen) return this.refreshTujianPanel() } onDownLv(lv) { FGUtil.getControl(this.tuJian, "ctrl_fold").selectedIndex = 0; this.lv = lv this.refreshTujianPanel() } clickChangeLv() { FGUtil.getControl(this.tuJian, "ctrl_fold").selectedIndex = 1; } initTujianItem(idx, obj: fairygui.GObject) { var item = obj.asCom; const index = this.getCurPageIndex(idx) FGUtil.getControl(item, "ctrl_flagType").selectedIndex = GameModel.game_conf.ZhenFa[index].atr_type + 1; this.showItemPos(item, GameModel.game_conf.ZhenFa[index].pos1, 1) this.showItemPos(item, GameModel.game_conf.ZhenFa[index].pos2, 2) FGUtil.getTextField(item,"label_name").text = GameModel.game_conf.ZhenFa[index].title FGUtil.getControl(item,"ctrl_state").selectedIndex = (this.delegte.index == index ? 1: 0) var atr = (this.lv / 10) let label = FGUtil.getRichTextField(item, "label_tips") label.ubbEnabled = true label.text = cc.js.formatStr(GameModel.game_conf.ZhenFa[index].atr_tips, atr) label.setVar("c", "#5C3900") label.flushVars() FGUtil.getButton(item,"btn_active").clearClick() FGUtil.getButton(item,"btn_active").onClick((e: Event, id: number = 0) => { GameModel.send("c2s_active_zhenfa_position", { index: this.getCurPageIndex(idx), level: this.lv }) }, this) } getPageCount() { const size = GameModel.game_conf.ZhenFa.length var count = 0 for (var i = 0;i < size;++i) { if (GameModel.game_conf.ZhenFa[i].type == this.page_index) { count = count + 1 } } return count } getCurPageIndex(index:number) { switch(this.page_index) { case 0: { return index } case 1: { return 5 + index } case 2: { return 10 + index } case 3: { return 15 + index } case 4: { return 21 + index } } return 0 } showItemPos(item:fairygui.GObject,pos_ary:boolean[],type:number) { const size = pos_ary.length for (var i = 0;i < size;++i) { var str = "item" + (i + 1) + "_" + type FGUtil.getComponent(item.asCom,str).visible = pos_ary[i] } } refreshTujianPanel() { if (!this.bOpen) return var itemList = FGUtil.getList(this.tuJian, "list_item"); itemList.numItems = this.getPageCount() } clickZhenFa1() { FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 0 this.page_index = 0 this.refreshTujianPanel() } clickZhenFa2() { FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 1 this.page_index = 1 this.refreshTujianPanel() } clickZhenFa3() { FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 2 this.page_index = 2 this.refreshTujianPanel() } clickZhenFa4() { FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 3 this.page_index = 3 this.refreshTujianPanel() } clickZhenFa5() { FGUtil.getControl(this.tuJian, "ctrl_type").selectedIndex = 4 this.page_index = 4 this.refreshTujianPanel() } pushCloseEvent(item: fairygui.GComponent, target: fairygui.GComponent, call: Function = null) { item.clearClick(); item.onClick(() => { call && call(); FGUtil.dispose(target); target = null; }, this) } }