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