Files

184 lines
5.7 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '03f1dibZQVDqJfCXMc+o/Zm', 'cmp.campfight.main');
// Scripts/mod/pvp/campfight/cmp/cmp.campfight.main.js
"use strict";
var CampfightConst = require("campfight.const");
var CampfightMod = require("campfight.mod");
var BridgeWindow = require("bridge.window");
var TipsController = require("tips_controller");
cc.Class({
"extends": BridgeWindow,
properties: {
view: {
//功能頁
"default": null,
type: cc.Node
},
statusNd: {
//狀態節點
"default": null,
type: cc.Node
},
timeNd: {
//時間節點
"default": null,
type: cc.Node
},
endNd: {
"default": null,
type: cc.Node
},
rankNd: {
"default": null,
type: cc.Node
},
selectNd: {
"default": null,
type: cc.Node
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
this.mod = CampfightMod.getInstance();
this.bindGEvent(CampfightConst.EVT_CAMP_MAIN, this.updateMian.bind(this));
this.bindGEvent(CampfightConst.EVT_CAMP_SETRANK, this.setCurRankNum.bind(this));
this.bindGEvent(CampfightConst.EVT_CAMP_STATUS_CHANGE, this.updateStatus.bind(this));
},
updateStatus: function updateStatus(status) {},
setEmptyPanel: function setEmptyPanel() {
nx.bridge.NodeChidrenDestroy(this.view);
this.endNd.active = true;
this.selectNd.active = false;
this.statusNd.active = false;
this.timeNd.active = false;
var cds = this.selectNd.children;
for (var i in cds) {
if (cds[i]) {
cds[i].active = false;
}
}
cds[0].active = true;
},
//消息監聽
updateMian: function updateMian(data) {
if (nx.dt.objEmpty(data)) {
return nx.tbox("CampFitNoOpen");
}
if (data.is_open == 0) {
//活動未開放
nx.gui.setString(this.statusNd, "txt", nx.text.getKey("CampFitNoOpen"));
this.setEmptyPanel();
return nx.tbox("CampFitNoOpen");
}
if (data.status == 0) {
//活動期間休賽階段
nx.gui.setString(this.statusNd, "txt", nx.text.getKey("CampFitEmp"));
this.setEmptyPanel();
return;
}
this.endNd.active = false;
this.selectNd.active = true;
this.statusNd.active = true;
this.timeNd.active = true;
this.setStatusTime(data.status, data.step_status_time);
//設置頁面
this.setStatusPanel(data.status);
//設置範圍
if (data.period == 1) {
nx.gui.setActive(this.selectNd, "1", true);
nx.gui.setActive(this.selectNd, "2", true);
nx.gui.setActive(this.selectNd, "3", true);
} else if (data.period == 3) {
nx.gui.setActive(this.selectNd, "4", true);
nx.gui.setActive(this.selectNd, "5", true);
} else {
var cds = this.selectNd.children;
for (var i in cds) {
if (cds[i]) {
cds[i].active = true;
}
}
}
},
setCurRankNum: function setCurRankNum(rank_num) {
if (!rank_num) return;
nx.gui.setString(this.timeNd, "rank_num", cc.js.formatStr(nx.text.getKey("CampFitCurNum"), rank_num));
},
onOpenConfigs: function onOpenConfigs() {
this.mod.setMainPanel(true);
this.mod.reqMainData();
},
onPreClosed: function onPreClosed() {
this.mod.setMainPanel(false);
},
setStatusTime: function setStatusTime(status, time) {
//pve報名挑戰階段
nx.gui.setActive(this.statusNd, "txt", true);
nx.gui.setActive(this.statusNd, "last_time", false);
nx.gui.setActive(this.timeNd, "clock", true);
nx.gui.setActive(this.timeNd, "txt", true);
nx.gui.setActive(this.timeNd, "rank_num", false);
if (status == 1 || status == 2) {
nx.gui.setString(this.statusNd, "txt", nx.text.getKey("CampFitPve"));
if (status == 2) {
nx.gui.setString(this.statusNd, "txt", nx.text.getKey("CampFitPve2"));
}
nx.gui.setCdTxt(this.timeNd, "txt", time);
} else if (status == 3 || status == 4) {
//公示階段和佈陣準備
// nx.gui.setString(this.statusNd,"txt",nx.text.getKey("CampFitForm"));
// nx.gui.setCdTxt(this.timeNd,"txt",time - client.socket.getTime());
nx.gui.setActive(this.statusNd, "txt", false);
nx.gui.setActive(this.statusNd, "last_time", true);
nx.gui.setActive(this.timeNd, "clock", false);
nx.gui.setActive(this.timeNd, "txt", false);
nx.gui.setActive(this.timeNd, "rank_num", true);
nx.gui.setCdTxt(this.statusNd, "last_time/2", time);
// if(status == 4){
// nx.tbox("CampFitFormTips");
// }
} else if (status == 5) {
nx.gui.setActive(this.statusNd, "txt", false);
nx.gui.setActive(this.statusNd, "last_time", true);
nx.gui.setActive(this.timeNd, "clock", false);
nx.gui.setActive(this.timeNd, "txt", false);
nx.gui.setActive(this.timeNd, "rank_num", true);
nx.gui.setCdTxt(this.statusNd, "last_time/2", time);
} else {
nx.gui.setString(this.statusNd, "txt", nx.text.getKey("CampFitPve2"));
}
},
setStatusPanel: function setStatusPanel(status) {
var _this = this;
//先關閉所有界面
nx.bridge.NodeChidrenDestroy(this.view);
// let cds = this.view.children;
// for(let i in cds){
// if(cds[i]){
// nx.gui.setActive(cds[i],"",false);
// }
// }
var view_path = CampfightConst.StatusToView[status];
if (!view_path) return;
nx.res.loadPrefab(view_path, function (_err, _data) {
if (_err) {
return;
}
var node = cc.instantiate(_data);
node.parent = _this.view;
node.active = true;
});
},
onClickRule: function onClickRule() {
var explain = game.configs.arena_camp_data.data_explain;
TipsController.getInstance().showDetailPanel(explain);
},
onClickRank: function onClickRank() {
nx.bridge.createPanel("WndCampfightRank");
}
});
cc._RF.pop();