SamsaraGame/assets/Script/ts/EquipRefine.ts

149 lines
5.0 KiB
TypeScript
Raw Normal View History

2025-04-24 17:03:28 +08:00
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,
});
}
}