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

223 lines
8.1 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";
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()
}
}