import MyModel from "../core/MyModel"; import SKUIUtil from "../gear_2.3.4/util/SKUIUtil"; import FGUtil, { TipAlign } from "../gear_2.3.4/fgui/FGUtil"; import SKSocket from "../gear_2.3.4/net/SKSocket"; import GameModel from "../core/GameModel"; import MsgAlert from "../game/msg/MsgAlert"; import SKDataUtil from "../gear_2.3.4/util/SKDataUtil"; import ItemUtil from "../core/ItemUtil"; import GameUtil from "../core/GameUtil"; import SkillUtil from "../game/skill/core/SkillUtil"; import SkillBase, { ESkillQuality } from "../game/skill/core/SkillBase"; import FGAlert from "../gear_2.3.4/fgui/FGAlert"; import SKLogger from "../gear_2.3.4/util/SKLogger"; import { LongPressSpeedProp } from "../core/EEnum"; import SKAnimation from "../gear_2.3.4/gui/SKAnimation"; export default class StarInfo extends cc.Component { static shared = new StarInfo(); main: fgui.GComponent; curStarId: number = 1; show(starid) { this.curStarId = starid this.loadUI(); } hide() { FGUtil.dispose(this.main); this.unscheduleAllCallbacks() this.main = null; } loadUI() { FGUtil.dispose(this.main); this.unscheduleAllCallbacks() this.main = fgui.UIPackage.createObject("main_ui", "xingzheng_detail").asCom; FGUtil.root().addChild(this.main); FGUtil.fitScreen(this.main); this.initUI(); this.initEvent(); } initUI(){ this.main.getChild("close").onClick(this.hide, this) this.showFreshThing() let obj = FGUtil.getObject(this.main, "n41") FGUtil.getControl(obj.asCom, "ctrl_selected").selectedIndex = 0 FGUtil.getControl(obj.asCom, "ctrl_state").selectedIndex = 1 FGUtil.getLoader(obj.asCom, "img_item").url = "ui://main_ui/9655" let list = FGUtil.getList(this.main, "n49") list.itemRenderer = this.initAttrItem.bind(this); list.numItems = 8 list.on(fgui.Event.CLICK_ITEM, this.onClickItem, this) list.selectedIndex = this.curStarId - 1 let item = list.getChildAt(this.curStarId - 1) this.onClickItem(item) } initEvent(){ FGUtil.getButton(this.main, "n40").onClick(this.onClickChangeAttr, this) FGUtil.getButton(this.main, "recast_btn").onClick(this.onClickGetNewStarAttr, this) FGUtil.getObject(this.main, "n41").onClick(this.onClickHunTianShi, this) } onClickHunTianShi(){ var itemInfo = ItemUtil.getItemData(9655); let info = SKDataUtil.clone(itemInfo) info.undel = true info.noopt = true info.operateid = this.curStarId cc.loader.loadRes("Prefabs/BagItemDetail", cc.Prefab, (err, prefab: any) => { if (err) { console.warn(err); return } let detail = cc.instantiate(prefab); detail.parent = this.main.node; // detail.setPosition(this.bagPanel.width / 2, -this.bagPanel.height / 2) detail.name = 'BagItemDetail'; detail.getComponent('BagItemDetail').loadInfo(info); detail.getComponent('BagItemDetail').showOperation(); }) } onClickChangeAttr(){ GameModel.send("c2s_replaceStarAttr", {starid: this.curStarId - 1}); } onClickGetNewStarAttr(){ GameModel.send("c2s_getNewStarAttr", {starid: this.curStarId - 1}); } initAttrItem(idx, item: fairygui.GObject){ FGUtil.getControl(item.asCom, "ctrl_name").selectedIndex = idx + 1 FGUtil.getControl(item.asCom, "isShow").selectedIndex = 0 if(MyModel.shared.StarData.getEquipID() == idx){ FGUtil.getControl(item.asCom, "isShow").selectedIndex = 1 } FGUtil.getLoader(item.asCom, "n33/icon").url = `ui://main_ui/5000${idx + 1}` let star = MyModel.shared.StarData.getStarByStarID(idx) FGUtil.getTextField(item.asCom, "lv").text = `等級:${star.level}級` } onClickItem(item: fgui.GObject){ let list = FGUtil.getList(this.main, "n49") this.curStarId = list.getChildIndex(item) + 1 let text = FGUtil.getTextField(item.asCom, "title").text let url = FGUtil.getLoader(item.asCom, "n33/icon").url FGUtil.getTextField(this.main, "label_itemBelong").text = `陣法-${text}` FGUtil.getLoader(this.main, "comp_item/img_item").url = url let icon = FGUtil.getObject(this.main, "comp_item") FGUtil.getControl(icon.asCom, "ctrl_state").selectedIndex = 1 FGUtil.getControl(this.main, "ctr_hasAttrNew").selectedIndex = 1 this.UpdateEquipAttr() this.UpdateNewAttr() } showFreshThing(){ let cnt = ItemUtil.getBagItemCount(9655) let text = `[color=#FFFFFF]5/${cnt}[/color]` if (cnt < 5){ text = `[color=#E72525]5[/color][color=#FFFFFF]/${cnt}[/color]` } FGUtil.getRichTextField(this.main, "n113").text = text } getDescrip(): string{ let star = MyModel.shared.StarData.getStarByStarID(this.curStarId - 1) let power = (star.level * 0.3).toFixed(1) if (this.curStarId == 5){ return `本方所有人物,召喚獸對敵方造成的普通攻擊傷害有${power}%加成。 ` } if (this.curStarId == 6){ return `本方所有人物,召喚獸獲得${power}%經驗加成。 ` } if (this.curStarId == 7){ return `本方所有人物,召喚獸的仙法,鬼火,震懾有${power}%加成。 ` } if (this.curStarId == 8){ return `本方所有人物增加${power}%冰混睡忘抗性。 ` } return "" } UpdateEquipAttr(){ FGUtil.getControl(this.main, "ctrl_hasAttr").selectedIndex = 1 FGUtil.getControl(this.main, "ctrl_attrNums").selectedIndex = 0 let star = MyModel.shared.StarData.getStarByStarID(this.curStarId - 1) if (star.equipAttr && star.equipAttr.length > 0){ FGUtil.getControl(this.main, "ctrl_hasAttr").selectedIndex = 0 if (star.equipAttr.length < 5){ FGUtil.getControl(this.main, "ctrl_attrNums").selectedIndex = 1 FGUtil.getTextField(this.main, "label_desc2").text = this.getDescrip() } for (let index = 0; index < star.equipAttr.length; index++) { let attr = star.equipAttr[index]; let item = FGUtil.getObject(this.main, `attr${index+1}`) let name = GameUtil.getAttrTypeL1Name(attr.ID) FGUtil.getTextField(item.asCom, "label_attrDesc1").text = name FGUtil.getTextField(item.asCom, "label_attr1").text = "+" + (attr.Value / 10).toFixed(1) + "%" } } } UpdateNewAttr(){ FGUtil.getControl(this.main, "ctr_hasAttrNew").selectedIndex = 1 FGUtil.getControl(this.main, "ctrl_attrNumsnew").selectedIndex = 0 let star = MyModel.shared.StarData.getStarByStarID(this.curStarId - 1) if (star.freshAttr && star.freshAttr.length > 0){ FGUtil.getControl(this.main, "ctr_hasAttrNew").selectedIndex = 0 if (star.freshAttr.length < 5){ FGUtil.getControl(this.main, "ctrl_attrNumsnew").selectedIndex = 1 FGUtil.getTextField(this.main, "label_desc3").text = this.getDescrip() } for (let index = 0; index < star.freshAttr.length; index++) { let attr = star.freshAttr[index]; let item = FGUtil.getObject(this.main, `newattr${index+1}`) let name = GameUtil.getAttrTypeL1Name(attr.ID) FGUtil.getTextField(item.asCom, "label_attrDesc1").text = name FGUtil.getTextField(item.asCom, "label_attr1").text = "+" + (attr.Value / 10).toFixed(1) + "%" } } this.showFreshThing() } ReplaceStarAttr(starid: number) { if(this.main == null ) return if (this.curStarId != starid + 1){ return } this.UpdateEquipAttr() this.UpdateNewAttr() } GetNewStarAttr(starid: number) { if(this.main == null ) return if (this.curStarId != starid + 1){ return } this.UpdateNewAttr() } }