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"; import StarInfo from "./StarInfo"; export default class StarHome extends cc.Component { static shared = new StarHome(); main: fgui.GComponent; curStarId: number = 1; levelInc: number = 1; show() { 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", "xingzhen_main").asCom; FGUtil.root().addChild(this.main); FGUtil.fitScreen(this.main); this.initUI(); this.initEvent(); } initUI() { this.main.getChild("n45").onClick(this.onClickStarInfo, this) let equip = MyModel.shared.StarData.getEquipID() for (let index = 1; index < 9; index++) { let name = "icon" + index let icon = FGUtil.getObject(this.main, name) icon.asCom.getController("ctrl_name").selectedIndex = index icon.asCom.getController("ctrl_attack").selectedIndex = 0 FGUtil.getLoader(icon.asCom, "icon/icon").url = `ui://main_ui/5000${index}` FGUtil.getTextField(icon.asCom, "label_lvl").text = `${this.getLevelByStarId(index)}級` FGUtil.getControl(icon.asCom, "ctrl_attack").selectedIndex = 0 if(equip == index - 1){ FGUtil.getControl(icon.asCom, "ctrl_attack").selectedIndex = 1 } icon.onClick(this.onClickItem.bind(this, index)) } //默認選中裝備的星陣, 未裝備則顯示第一個星陣 if (equip == -1){ equip = 1 } this.onClickItem(equip) FGUtil.getButton(this.main, "n47").onClick(this.onClickEquip, this) } initEvent() { FGUtil.getObject(this.main, "n60/btn_add").onClick(this.onClickAdd, this) FGUtil.getObject(this.main, "n60/btn_sub").onClick(this.onClickSub, this) FGUtil.getObject(this.main, "n60/do").onClick(this.onClickUpgrade, this) FGUtil.getObject(this.main, "close").onClick(this.hide, this) } getLevelByStarId(starid):number{ let star = MyModel.shared.StarData.getStarByStarID(starid-1) return star.level } showAddLevel(lv: number, inc: number) { let text = `[color=#FFFFFF]${lv}+[/color][color=#0BDC58]${inc}級[color]` FGUtil.getTextField(this.main, "n60/label_addLvl").text = text } showNeedMoney(lv: number, inc: number){ let need = (2 * lv + inc - 1) * inc / 2 * 5 let cnt = ItemUtil.getBagItemCount(9654) let text = `[color=#FFFFFF]${need}/${cnt}[/color]` if (cnt < need){ text = `[color=#E72525]${need}[/color][color=#FFFFFF]/${cnt}[/color]` } FGUtil.getTextField(this.main, "n60/label_costItem").text = text } showAttr(lv: number){ let power = lv * 0.5 FGUtil.getTextField(this.main, "n60/n10").text = `五行加成之力${power}%` } onClickStarInfo() { StarInfo.shared.show(this.curStarId) } onClickItem(starid) { this.curStarId = starid FGUtil.getControl(this.main, "ctrl_select").selectedIndex = starid this.levelInc = 1 let lv = this.getLevelByStarId(this.curStarId) this.showAddLevel(lv, this.levelInc) this.showNeedMoney(lv, this.levelInc) this.showAttr(lv) } onClickAdd() { let lv = this.getLevelByStarId(this.curStarId) this.levelInc++ if (this.levelInc + lv >= 100) { this.levelInc = 100 - lv } if (this.levelInc <= 0) { this.levelInc = 1 } this.showAddLevel(lv, this.levelInc) this.showNeedMoney(lv, this.levelInc) } onClickSub() { let lv = this.getLevelByStarId(this.curStarId) this.levelInc-- if (this.levelInc <= 0) { this.levelInc = 1 } this.showAddLevel(lv, this.levelInc) this.showNeedMoney(lv, this.levelInc) } onClickUpgrade(){ let lv = this.getLevelByStarId(this.curStarId) if (lv == 100){ return MsgAlert.addMsg("該陣法等級已滿級,請換個陣法升級吧!") } let msg = { starid: this.curStarId - 1, upgrade: this.levelInc } GameModel.send("c2s_upgradeStar", msg); } onClickEquip() { GameModel.send("c2s_equipStar", {starid: this.curStarId - 1}); } UpgradeStar(starid: number) { if(this.main == null ) return let name = `icon${starid + 1}` let icon = FGUtil.getObject(this.main, name) FGUtil.getTextField(icon.asCom, "label_lvl").text = `${this.getLevelByStarId(starid + 1)}級` if (this.curStarId != starid + 1){ return } this.onClickItem(this.curStarId) } UpdateEquip(){ let equip = MyModel.shared.StarData.getEquipID() for (let index = 1; index < 9; index++) { let name = "icon" + index let icon = FGUtil.getObject(this.main, name) FGUtil.getControl(icon.asCom, "ctrl_attack").selectedIndex = 0 if (index == equip + 1) { FGUtil.getControl(icon.asCom, "ctrl_attack").selectedIndex = 1 } } } }