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

277 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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