194 lines
5.9 KiB
JavaScript
194 lines
5.9 KiB
JavaScript
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");
|
|
}
|
|
});
|