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