261 lines
7.9 KiB
TypeScript
261 lines
7.9 KiB
TypeScript
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)
|
|
}
|
|
}
|