2025-04-24 17:03:28 +08:00

182 lines
6.0 KiB
TypeScript

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
}
}
}
}