277 lines
11 KiB
TypeScript
277 lines
11 KiB
TypeScript
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)
|
||
}
|
||
} |