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