167 lines
5.5 KiB
TypeScript
167 lines
5.5 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 ItemUtil from "../core/ItemUtil";
|
||
|
|
||
|
const {ccclass, property} = cc._decorator;
|
||
|
@ccclass
|
||
|
export default class active_panel extends cc.Component {
|
||
|
/**
|
||
|
* 信物面板單例實例
|
||
|
*/
|
||
|
public static Instance: active_panel = null;
|
||
|
/**
|
||
|
* 信物面板
|
||
|
*/
|
||
|
panel: fgui.GComponent = null;
|
||
|
/**
|
||
|
* 需要加載的預製體
|
||
|
*/
|
||
|
prefabObject: any = {};
|
||
|
/**
|
||
|
* 代理
|
||
|
*/
|
||
|
delegte: any = null
|
||
|
|
||
|
onLoad() {
|
||
|
if (active_panel.Instance === null) {
|
||
|
active_panel.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
|
||
|
}
|
||
|
|
||
|
getMinLevel(){
|
||
|
let level = 0
|
||
|
for (let index = 0; index < this.delegte.info.length; index++) {
|
||
|
let data = this.delegte.info[index];
|
||
|
if(data.level < level || level == 0){
|
||
|
level = data.level
|
||
|
}
|
||
|
}
|
||
|
return level
|
||
|
}
|
||
|
|
||
|
openActivePanel() {
|
||
|
if (!this.panel || (this.panel && !this.panel.node && !SKUIUtil.isValid(this.panel.node))) {
|
||
|
this.panel = FGUtil.create("main_ui", "bagua_info");
|
||
|
FGUtil.root().addChild(this.panel);
|
||
|
FGUtil.fitScreen(this.panel)
|
||
|
}
|
||
|
const index = this.delegte.index
|
||
|
FGUtil.getButton(this.panel,"btn_change").onClick((e:Event,id:number=0) => {
|
||
|
this.delegte.onDownTuJian()
|
||
|
this.close()
|
||
|
},this)
|
||
|
|
||
|
FGUtil.getButton(this.panel,"mask").onClick((e:Event,id:number=0) => {
|
||
|
this.close()
|
||
|
},this)
|
||
|
|
||
|
var atr = this.getMinLevel() / 10
|
||
|
FGUtil.getTextField(this.panel,"label_name").text = GameModel.game_conf.ZhenFa[index].title
|
||
|
let label = FGUtil.getRichTextField(this.panel,"label_desc")
|
||
|
label.text = cc.js.formatStr(GameModel.game_conf.ZhenFa[index].atr_tips, atr)
|
||
|
label.setVar("c", "#FFFFFF")
|
||
|
label.flushVars()
|
||
|
|
||
|
const ZhenFaItemCount = 8
|
||
|
const count = GameModel.game_conf.ZhenFa[index].valid_pos.length
|
||
|
for (var i = 0;i < ZhenFaItemCount;++i) {
|
||
|
FGUtil.getComponent(this.panel, "item" + (i + 1) + "_2").visible = false
|
||
|
}
|
||
|
|
||
|
for (var i = 0;i < count;++i) {
|
||
|
for (var j = 0;j < ZhenFaItemCount;++j) {
|
||
|
if (GameModel.game_conf.ZhenFa[index].valid_pos[i] == j) {
|
||
|
FGUtil.getComponent(this.panel,"item" + (j + 1) + "_2").visible = true
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let list = FGUtil.getList(this.panel, "group_info/list_item")
|
||
|
list.itemRenderer = this.initAttrList.bind(this)
|
||
|
list.numItems = count
|
||
|
}
|
||
|
|
||
|
getAttrName(classify, attr:number) {
|
||
|
if (0 == classify) {
|
||
|
const attr_name = ['加強攻擊','加強速度','加強魅惑','加強加防','加強治愈','加強橫掃','加強破甲'
|
||
|
,'加強震擊','忽視水','忽視雷','忽視火','忽視風','忽視封印','忽視混亂','忽視昏睡','忽視毒'
|
||
|
,'忽視遺忘','忽視鬼火','忽視三尸蟲','忽視抗震懾','強力克金','強力克木','強力克水','強力克火'
|
||
|
,'強力剋土']
|
||
|
return attr_name[attr]
|
||
|
} else {
|
||
|
const attr_name = ['抗水法','抗雷法','抗火法','抗風法','抗封印','抗混亂','抗昏睡'
|
||
|
,'抗中毒','抗遺忘','抗鬼火','抗三尸蟲','物理吸收','抗震懾','躲閃']
|
||
|
return attr_name[attr]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
initAttrList(idx, obj) {
|
||
|
let pos = GameModel.game_conf.ZhenFa[this.delegte.index].valid_pos[idx]
|
||
|
FGUtil.getControl(obj, "ctrl_type").selectedIndex = pos
|
||
|
|
||
|
let label = FGUtil.getRichTextField(obj, "label_desc")
|
||
|
label.ubbEnabled = true
|
||
|
label.text = `[color=#FFFFFF]無屬性激活[/color]`
|
||
|
label.flushVars()
|
||
|
|
||
|
FGUtil.getProgressBar(obj, "progress_value").visible = false
|
||
|
FGUtil.getTextField(obj, "label_attr1").visible = false
|
||
|
|
||
|
let item = null
|
||
|
for (let index = 0; index < this.delegte.list.length; index++) {
|
||
|
let _item = this.delegte.list[index];
|
||
|
if(_item.pos == pos){
|
||
|
item = _item
|
||
|
}
|
||
|
}
|
||
|
if(item == null)return
|
||
|
|
||
|
let data = ItemUtil.getItemData(item.id)
|
||
|
let desp = this.getAttrName(data.classify, item.attr)
|
||
|
label.text = `[color=#02F15D]${desp}[/color]`
|
||
|
label.flushVars()
|
||
|
|
||
|
FGUtil.getTextField(obj, "label_attr1").visible = true
|
||
|
FGUtil.getTextField(obj, "label_attr1").text = (item.value / 10).toFixed(1) + "%"
|
||
|
|
||
|
FGUtil.getProgressBar(obj, "progress_value").visible = true
|
||
|
FGUtil.getProgressBar(obj, "progress_value").value = (item.value / item.max) * 100
|
||
|
}
|
||
|
|
||
|
//關閉
|
||
|
close() {
|
||
|
this.destroy()
|
||
|
FGUtil.dispose(this.panel);
|
||
|
this.panel = null;
|
||
|
}
|
||
|
}
|