import SKUIUtil from "./gear_2.3.4/util/SKUIUtil"; import FGUtil from "./gear_2.3.4/fgui/FGUtil"; import GameUtil from "./core/GameUtil"; import SKDataUtil from "./gear_2.3.4/util/SKDataUtil"; import GameModel from "./core/GameModel"; import MsgAlert from "./game/msg/MsgAlert"; import FGAlert from "./gear_2.3.4/fgui/FGAlert"; const { ccclass, property } = cc._decorator; export default class EquipRefine extends cc.Component { /** * 單例實例 */ public static Instance: EquipRefine = null; /** * 主面板 */ refinePanel: fgui.GComponent = null; refineList: any = []; eqId: string = ""; selectId: number = 0; tipWarn: boolean = false; tipNum: number = 0; inCD: boolean = false onLoad() { if (EquipRefine.Instance === null) { EquipRefine.Instance = this; } else { this.destroy(); return; } } openEquipRefinePanel(listData: any) { this.tipWarn = false if (!SKUIUtil.isFGUIValid(this.refinePanel)) { this.refinePanel = FGUtil.create("main_ui", "priview_more_panel"); FGUtil.root().addChild(this.refinePanel); this.refinePanel.makeFullScreen(); } this.refineList = listData; FGUtil.getButton(this.refinePanel, "alert/back").onClick(this.backClick, this); FGUtil.getButton(this.refinePanel, "alert/coast").onClick(this.changeRefine, this); FGUtil.getButton(this.refinePanel, "alert/change").onClick(this.changeProp, this); var hasNum = GameModel.player.itemList[10404] == null ? 0 : GameModel.player.itemList[10404] FGUtil.getRichTextField(this.refinePanel, "alert/num").text = `[color=#${hasNum > 29 ? "00A03C" : "FB8C84"}]${hasNum}[/color]/30` for (let i = 0; i < 6; i++) { var item = FGUtil.getComponent(this.refinePanel, `alert/n${i}`); var list = FGUtil.getList(item, "list"); var info = listData[i]; FGUtil.getTextField(item, "score").text = info.score; list.removeChildren(); var chongfu = {} for (let m in info.property) { var attr = list.addItem().asCom; var prop = info.property[m] for (var key in prop) { if (!chongfu[key]) { chongfu[key] = 1 } else chongfu[key]++ let valuestr = prop[key]; if (GameUtil.equipTypeNumerical.indexOf(Number(key)) == -1) { valuestr = (valuestr > 0 ? '+' : '') + (valuestr / 10).toFixed(1) + '%'; } else { valuestr = (valuestr > 0 ? '+' : '') + valuestr; } // @ts-ignore FGUtil.getTextField(attr, "title").text = GameUtil.getAttrTypeL1Name(key); FGUtil.getTextField(attr, "value").text = valuestr; } } for (var keyC in chongfu) { if (chongfu[keyC] >= 3) { this.tipWarn = true; this.tipNum = i + 1 } } item.node["idx"] = i item.onClick(this.ClickRefineItem, this) } } backClick() { FGUtil.dispose(this.refinePanel); this.refinePanel = null; } ClickRefineItem(e: Event) { var id = 0; if (e && e.target && SKDataUtil.hasProperty(e.target, "idx")) id = e.target["idx"]; if (id == this.selectId) return; FGUtil.getControl(this.refinePanel, `alert/n${this.selectId}/selected`).selectedIndex = 0 FGUtil.getControl(this.refinePanel, `alert/n${id}/selected`).selectedIndex = 1 this.selectId = id } changeProp() { GameModel.send("c2s_equip_refine", { operation: 1, // 0獲取,1確認 roleid: GameModel.player.roleid, level: 2, // 0使用低九彩雲龍珠,1中級,2高級 equipid: this.eqId, refine: JSON.stringify(this.refineList[this.selectId].property) }) this.backClick() } changeRefine() { if (this.inCD) { MsgAlert.addMsg("您點擊太快啦") return; } this.inCD = true this.scheduleOnce(() => { this.inCD = false }, 0.8) if (this.tipWarn) { FGAlert.show(`預覽${this.tipNum}中有存在三條相同屬性,確定要重新煉化麼?`, () => { FGAlert.hide() }, () => { FGAlert.hide() this.tipWarn = false this.changeRefine() }) return } this.tipWarn = false if (GameModel.player.itemList[10404]) GameModel.player.itemList[10404]--; else { MsgAlert.addMsg("煉化材料不足") return; } GameModel.send('c2s_equip_refine', { operation: 0, roleid: GameModel.player.roleid, level: 2, equipid: this.eqId, }); } }