Files

194 lines
5.9 KiB
JavaScript
Raw Permalink Normal View History

2026-05-23 22:10:14 +08:00
const CampfightConst = require( "campfight.const" );
const CampfightMod = require("campfight.mod");
const BridgeWindow = require( "bridge.window" );
const 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 () {
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(status){
},
setEmptyPanel(){
nx.bridge.NodeChidrenDestroy(this.view);
this.endNd.active = true;
this.selectNd.active = false;
this.statusNd.active = false;
this.timeNd.active = false;
let cds = this.selectNd.children;
for(let i in cds){
if(cds[i]){
cds[i].active = false;
}
}
cds[0].active = true;
},
//消息監聽
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{
let cds = this.selectNd.children;
for(let i in cds){
if(cds[i]){
cds[i].active = true;
}
}
}
},
setCurRankNum(rank_num){
if(!rank_num)return;
nx.gui.setString(this.timeNd,"rank_num",cc.js.formatStr(nx.text.getKey("CampFitCurNum"),rank_num));
},
onOpenConfigs() {
this.mod.setMainPanel(true);
this.mod.reqMainData();
},
onPreClosed() {
this.mod.setMainPanel(false);
},
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(status){
//先關閉所有界面
nx.bridge.NodeChidrenDestroy(this.view);
// let cds = this.view.children;
// for(let i in cds){
// if(cds[i]){
// nx.gui.setActive(cds[i],"",false);
// }
// }
let view_path = CampfightConst.StatusToView[status];
if(!view_path)return;
nx.res.loadPrefab( view_path, ( _err, _data ) => {
if( _err ) {
return;
}
let node = cc.instantiate( _data );
node.parent = this.view;
node.active = true;
} );
},
onClickRule(){
let explain = game.configs.arena_camp_data.data_explain;
TipsController.getInstance().showDetailPanel(explain);
},
onClickRank(){
nx.bridge.createPanel("WndCampfightRank");
}
});