277 lines
11 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 MsgAlert from "./game/msg/MsgAlert";
import GameModel from "./core/GameModel";
import SKLocalUtil from "./gear_2.3.4/util/SKLocalUtil";
import GameUtil from "./core/GameUtil";
import ItemUtil from "./core/ItemUtil";
import PlayMethod from "./playMethod";
import SKDataUtil from "./gear_2.3.4/util/SKDataUtil";
const { ccclass, property } = cc._decorator;
@ccclass
export default class GangWar extends cc.Component {
/**
*
*/
public static Instance : GangWar = null;
/**
*
*/
mainPanel : fgui.GComponent = null;
isStart : boolean = false
time_m : number = 0;
time_s : number = 0;
openTime : boolean = false;
battleWinPanel : fgui.GComponent = null;
onLoad() {
if (GangWar.Instance === null) {
GangWar.Instance = this;
} else {
this.destroy();
return;
}
}
openBattleMainPanel() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) {
this.mainPanel = FGUtil.create("main_ui", "gang_battle_title_panel");
FGUtil.root().addChild(this.mainPanel);
this.mainPanel.makeFullScreen();
}
FGUtil.getComponent(this.mainPanel, "mask").onClick(this.closePanel, this);
FGUtil.getButton(this.mainPanel, "btn/n8").onClick(this.openView, this)
FGUtil.getButton(this.mainPanel, "ready/rule").onClick(this.openRule, this)
FGUtil.getButton(this.mainPanel, "history/rule").onClick(this.openRule, this)
FGUtil.getButton(this.mainPanel, "ready/leave").onClick(this.leaveMap, this)
FGUtil.getButton(this.mainPanel, "history/leave").onClick(this.leaveMap, this)
}
hideMainPanel() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return;
this.mainPanel.visible = false
}
showMainPanel() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return;
this.mainPanel.visible = true
}
changeBtnType(data) {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return;
FGUtil.getControl(this.mainPanel, "btn/start").selectedIndex = 1
FGUtil.getTextField(this.mainPanel, "btn/time").text = `${this.time_m}:${this.time_s}`
var cT = new Date().getTime();
var sT = data.time;
var t = Math.floor((cT - sT) / 1000);
this.time_s = t % 60
this.time_m = Math.floor(t / 60)
this.time_s = this.time_s < 0 ? 0 : this.time_s
this.time_m = this.time_m < 0 ? 0 : this.time_m
if (!this.openTime)
this.schedule(() => {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return;
this.time_s++
if (this.time_s >= 60) {
this.time_m++
this.time_s = 0
}
FGUtil.getTextField(this.mainPanel, "btn/time").text = `${this.time_m}:${this.time_s}`
}, 1)
this.openTime = true
}
changeGameHp(info) {
var lInfo = SKDataUtil.jsonBy(info.gateHpL)
var rInfo = SKDataUtil.jsonBy(info.gateHpR)
if (lInfo.name == GameModel.player.bangname) {
// 本人是左邊
console.log("我方耐久", lInfo.gateHp)
console.log("敵方耐久", rInfo.gateHp)
FGUtil.getProgressBar(this.mainPanel, "btn/n14").value = lInfo.gateHp
FGUtil.getProgressBar(this.mainPanel, "btn/n15").value = rInfo.gateHp
FGUtil.getTextField(this.mainPanel, "btn/myBang").text = lInfo.name
FGUtil.getTextField(this.mainPanel, "btn/diBang").text = rInfo.name
} else {
console.log("我方耐久", rInfo.gateHp)
console.log("敵方耐久", lInfo.gateHp)
FGUtil.getProgressBar(this.mainPanel, "btn/n14").value = rInfo.gateHp
FGUtil.getProgressBar(this.mainPanel, "btn/n15").value = lInfo.gateHp
FGUtil.getTextField(this.mainPanel, "btn/myBang").text = rInfo.name
FGUtil.getTextField(this.mainPanel, "btn/diBang").text = lInfo.name
}
}
closePanel() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
FGUtil.getControl(this.mainPanel, "show").selectedIndex = 0
}
destroyPanel() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
FGUtil.dispose(this.mainPanel)
this.mainPanel = null
this.openTime = false
this.unscheduleAllCallbacks()
}
openView() {
if (this.isStart)
this.openHistory()
else
this.openReady()
}
openRule() {
PlayMethod.showPlayMethod("6017")
}
leaveMap() {
GameModel.send("c2s_to_map_chang_an", {
roleId: GameModel.player.roleid,
type: 1
})
}
openReady() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
FGUtil.getControl(this.mainPanel, "show").selectedIndex = 1
GameModel.send("c2s_detail_statistics", {})
}
refreshReady(info) {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
if (FGUtil.getControl(this.mainPanel, "show").selectedIndex != 1) return
var myInfo = SKDataUtil.jsonBy(info.factionSide)
var oppInfo = SKDataUtil.jsonBy(info.factionEnemy)
var readyView = FGUtil.getComponent(this.mainPanel, "ready");
FGUtil.getTextField(readyView, "myGangName").text = myInfo.name;
FGUtil.getTextField(readyView, "myTeam").text = myInfo.num;
FGUtil.getTextField(readyView, "oppGangName").text = oppInfo.name;
FGUtil.getTextField(readyView, "oppTeam").text = oppInfo.num;
FGUtil.getTextField(readyView, "oppTeam").font = "oppTeam";
FGUtil.getTextField(readyView, "myTeam").font = "myTeam";
}
openHistory() {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
FGUtil.getControl(this.mainPanel, "show").selectedIndex = 2
GameModel.send("c2s_detail_statistics", {})
}
refreshHistory(info) {
if (!SKUIUtil.isFGUIValid(this.mainPanel)) return
if (FGUtil.getControl(this.mainPanel, "show").selectedIndex != 2) return
var myInfo = SKDataUtil.jsonBy(info.factionSide)
var oppInfo = SKDataUtil.jsonBy(info.factionEnemy)
var historyView = FGUtil.getComponent(this.mainPanel, "history");
FGUtil.getTextField(historyView, "myGangName").text = myInfo.name;
FGUtil.getTextField(historyView, "n51").text = `${myInfo.gateHp || 0}/5000`;
FGUtil.getTextField(historyView, "n54").text = `${myInfo.num || 0}`;
FGUtil.getTextField(historyView, "n57").text = `${myInfo.member || 0}`;
FGUtil.getTextField(historyView, "n60").text = `${myInfo.contest || 0}`;
FGUtil.getTextField(historyView, "n511").text = `${myInfo.tower || 0}`;
FGUtil.getTextField(historyView, "n544").text = `${myInfo.cannon || 0}`;
FGUtil.getTextField(historyView, "n577").text = `${myInfo.highest || "(0場"}`;
FGUtil.getTextField(historyView, "n600").text = ``;
FGUtil.getTextField(historyView, "oppGangName").text = oppInfo.name;
FGUtil.getTextField(historyView, "n52").text = `${oppInfo.gateHp || 0}/5000`;
FGUtil.getTextField(historyView, "n55").text = `${oppInfo.num || 0}`;
FGUtil.getTextField(historyView, "n58").text = `${oppInfo.member || 0}`;
FGUtil.getTextField(historyView, "n61").text = `${oppInfo.contest || 0}`;
FGUtil.getTextField(historyView, "n522").text = `${oppInfo.tower || 0}`;
FGUtil.getTextField(historyView, "n555").text = `${oppInfo.cannon || 0}`;
FGUtil.getTextField(historyView, "n588").text = `${oppInfo.highest || "(0場"}`;
FGUtil.getTextField(historyView, "n611").text = `${oppInfo.self || ""}`;
}
openWinPanel(data) {
if (!SKUIUtil.isFGUIValid(this.battleWinPanel)) {
this.battleWinPanel = FGUtil.create("main_ui", "gang_war_win_panel");
FGUtil.root().addChild(this.battleWinPanel);
this.battleWinPanel.makeFullScreen();
}
let closeBtn = FGUtil.getComponent(this.battleWinPanel, "alert/mask")
let mask = FGUtil.getComponent(this.battleWinPanel, "mask")
this.pushCloseEvent(closeBtn, this.battleWinPanel);
this.pushCloseEvent(mask, this.battleWinPanel);
var jiInfo = SKDataUtil.jsonBy(data.factionSide)
var diInfo = SKDataUtil.jsonBy(data.factionEnemy)
var infoBox = FGUtil.getComponent(this.battleWinPanel, "alert/n31")
FGUtil.getTextField(infoBox, "mybangName").text = jiInfo.name
FGUtil.getTextField(infoBox, "dibangName").text = diInfo.name
FGUtil.getTextField(infoBox, "naijiu1").text = (jiInfo.gateHp < 0 ? 0 : jiInfo.gateHp) + "/5000"
FGUtil.getTextField(infoBox, "naijiu2").text = (diInfo.gateHp < 0 ? 0 : diInfo.gateHp) + "/5000"
FGUtil.getTextField(infoBox, "canzhan1").text = jiInfo.num
FGUtil.getTextField(infoBox, "canzhan2").text = diInfo.num
FGUtil.getTextField(infoBox, "chengyuan1").text = jiInfo.member
FGUtil.getTextField(infoBox, "chengyuan2").text = diInfo.member
FGUtil.getTextField(infoBox, "gaoshou1").text = jiInfo.contest
FGUtil.getTextField(infoBox, "gaoshou2").text = diInfo.contest
FGUtil.getTextField(infoBox, "nengliang1").text = jiInfo.tower
FGUtil.getTextField(infoBox, "nengliang2").text = diInfo.tower
FGUtil.getTextField(infoBox, "shenlong1").text = jiInfo.cannon
FGUtil.getTextField(infoBox, "shenlong2").text = diInfo.cannon
FGUtil.getTextField(infoBox, "shadi1").text = `${jiInfo.highest || "(0場"}`;
FGUtil.getTextField(infoBox, "shadi2").text = `${diInfo.highest || "(0場"}`;
FGUtil.getTextField(infoBox, "benren").text = jiInfo.self
this.scheduleOnce(() => {
if (this.battleWinPanel && this.battleWinPanel.node) {
FGUtil.dispose(this.battleWinPanel);
this.battleWinPanel = null;
}
}, 3)
}
openLosePanel(data) {
if (!SKUIUtil.isFGUIValid(this.battleWinPanel)) {
this.battleWinPanel = FGUtil.create("main_ui", "gang_war_lose_panel");
FGUtil.root().addChild(this.battleWinPanel);
this.battleWinPanel.makeFullScreen();
}
let closeBtn = FGUtil.getComponent(this.battleWinPanel, "alert/mask")
let mask = FGUtil.getComponent(this.battleWinPanel, "mask")
this.pushCloseEvent(closeBtn, this.battleWinPanel);
this.pushCloseEvent(mask, this.battleWinPanel);
var jiInfo = SKDataUtil.jsonBy(data.factionSide)
var diInfo = SKDataUtil.jsonBy(data.factionEnemy)
var infoBox = FGUtil.getComponent(this.battleWinPanel, "alert/info")
FGUtil.getTextField(infoBox, "mybangName").text = jiInfo.name
FGUtil.getTextField(infoBox, "dibangName").text = diInfo.name
FGUtil.getTextField(infoBox, "naijiu1").text = (jiInfo.gateHp < 0 ? 0 : jiInfo.gateHp) + "/5000"
FGUtil.getTextField(infoBox, "naijiu2").text = (diInfo.gateHp < 0 ? 0 : diInfo.gateHp) + "/5000"
FGUtil.getTextField(infoBox, "canzhan1").text = jiInfo.num
FGUtil.getTextField(infoBox, "canzhan2").text = diInfo.num
FGUtil.getTextField(infoBox, "chengyuan1").text = jiInfo.member
FGUtil.getTextField(infoBox, "chengyuan2").text = diInfo.member
FGUtil.getTextField(infoBox, "gaoshou1").text = jiInfo.contest
FGUtil.getTextField(infoBox, "gaoshou2").text = diInfo.contest
FGUtil.getTextField(infoBox, "nengliang1").text = jiInfo.tower
FGUtil.getTextField(infoBox, "nengliang2").text = diInfo.tower
FGUtil.getTextField(infoBox, "shenlong1").text = jiInfo.cannon
FGUtil.getTextField(infoBox, "shenlong2").text = diInfo.cannon
FGUtil.getTextField(infoBox, "shadi1").text = `${jiInfo.highest || "(0場"}`;
FGUtil.getTextField(infoBox, "shadi2").text = `${diInfo.highest || "(0場"}`;
FGUtil.getTextField(infoBox, "benren").text = jiInfo.self
this.scheduleOnce(() => {
if (this.battleWinPanel && this.battleWinPanel.node) {
FGUtil.dispose(this.battleWinPanel);
this.battleWinPanel = null;
}
}, 3)
}
/**
*
*/
pushCloseEvent(item : fairygui.GComponent, target : fairygui.GComponent, call : Function = null) {
item.clearClick();
item.onClick(() => {
call && call()
FGUtil.dispose(target);
target = null;
}, this)
}
}