/****************************************************************** * * 限定挑戰 * ******************************************************************/ const ActPage = require( "act.page.base" ); const NxSpine = require("nx.fx.spine"); const PathTool = require("pathtool"); const ItemLay = require("cmp.common.itemlayout"); const BCT = require("battle_controller"); const BCS = require("battle_const"); const TipsController = require("tips_controller"); cc.Class( { extends: ActPage, properties: { awards:{ default:null, type:ItemLay }, scores:{ default:null, type:cc.Node }, rankList:{ default:null, type:cc.Node }, rankItem:{ default:null, type:cc.Node }, rankSelf:{ default:null, type:cc.Node }, totalDmg:{ default:null, type:cc.Node }, cdTime:{ default:null, type:cc.Node }, challengeNum:{ default:null, type:cc.Node }, getBtn:{ default:null, type:cc.Node }, roleSp:{ default:null, type:NxSpine }, pic:{ default:null, type:cc.Node }, maxTi:{ default:null, type:cc.Node }, rankTi:{ default:null, type:cc.Node }, rankTi3:{ default:null, type:cc.Node }, }, // 初始化 build: function( _data ) { this._super( _data ); this.chal_data = game.configs.limit_challenge_data; // 活动监听 this.mod.vbind( this, [ [ "LimitChallengeInfos", this.freshInfos.bind( this ) ], [ "LimitChallengeRanks", this.freshRanks.bind( this ) ], ] ); }, onEnable(){ this.mod.reqLimitData(this.data.camp_id); this.mod.reqRank(this.data.camp_id); }, onDisable(){ this.awards.rebuild([]); }, // 销毁 onDestroy: function() { // 活动监听解除 if( this.mod ) { this.mod.vunbind( this ); } this._super(); }, freshInfos(data){ this.payId = []; if(nx.dt.objEmpty(data))return; let info = data[this.data.camp_id]; if(nx.dt.objEmpty(info))return; this.lastChallenge = info.challenge_num; nx.gui.setCdTxt(this.cdTime,"",info.end_time - client.socket.getTime()); nx.gui.setString(this.challengeNum,"",info.challenge_num); nx.gui.setString(this.totalDmg,"",info.all_dps); let res_data = this.chal_data.data_info[this.data.camp_id]; if(res_data){ let res_path = PathTool.getSpinePath(res_data.spine,"show",false); this.roleSp.load(res_path,(_e)=>{ if(_e){ this.roleSp.stop(); }else{ this.roleSp.action("action1",true); } }); let ti_path = cc.js.formatStr("locals/%s/images/acts/%s",nx.getLocLanguage(),res_data.title); nx.gui.setSpriteFrame(this.pic,"",ti_path); if(res_data.type == 1){ nx.gui.setString(this.maxTi,"",nx.text.getKey("batMaxDps")); nx.gui.setString(this.rankTi,"",nx.text.getKey("DpsRank")); nx.gui.setString(this.rankTi3,"",nx.text.getKey("DpsDmgVal")); }else if(res_data.type == 2){ nx.gui.setString(this.maxTi,"",nx.text.getKey("batMaxCure")); nx.gui.setString(this.rankTi,"",nx.text.getKey("CureRank")); nx.gui.setString(this.rankTi3,"",nx.text.getKey("DpsCureVal")); } } //獎勵和積分 let awards = this.chal_data.data_get_info; let camp_id = info.camp_id; let pushs = []; let is_allow_get = false;//有一個就能領取 for(let i=1;i<=7;i++){ let aCfg = awards[camp_id+"_"+i]; if(aCfg){ pushs.push(aCfg.reward[0]); let scroe = cc.js.formatStr(nx.text.getKey("lab_money_tip_w"),aCfg.num/10000); nx.gui.setString(this.scores,String(i),scroe); let get_data = info.rewards[i-1]; for(let a in info.rewards){ if(info.rewards[a].id == i){ get_data = info.rewards[a]; break; } } if(get_data && get_data.status == 1){ is_allow_get = true; nx.gui.setColor(this.scores,String(i),new cc.Color(0,252,255)); }else if(get_data && get_data.status == 2){ nx.gui.setColor(this.scores,String(i),new cc.Color(255,255,255)); nx.gui.setString(this.scores,String(i),nx.text.getKey("Got")); }else{ nx.gui.setColor(this.scores,String(i),new cc.Color(255,255,255)); } } } this.awards.rebuild(pushs); nx.gui.setActive(this.getBtn,"",is_allow_get); }, freshRanks(data){ if(nx.dt.objEmpty(data))return; //先設置簡單榜單 let info_data = this.chal_data.data_info[this.data.camp_id]; this.setMyRank(data.my_idx,data.name,data.my_val1); nx.bridge.NodeChidrenDestroy(this.rankList); for(let i=0;i<3;i++){ let rank_data = data.rank_list[i]; if(rank_data){ let item = cc.instantiate(this.rankItem); item.parent = this.rankList; item.active = true; item.x = 0; nx.gui.setActive(item,String(rank_data.idx),true); nx.gui.setString(item,"name",rank_data.name); nx.gui.setString(item,"dmg",rank_data.val1); if(info_data){ if(info_data.type == 1){ nx.gui.setColor(item,"dmg",new cc.Color(255,105,46)); }else if(info_data.type == 2){ nx.gui.setColor(item,"dmg",new cc.Color(80,238,2)); } } } } }, setMyRank(myidx,myname,my_val1){ nx.gui.setString(this.rankSelf,"name",myname); if(myidx == 0){ nx.gui.setString(this.rankSelf,"rank",nx.text.getKey("Rank0")); nx.gui.setString(this.rankSelf,"dmg",0); }else{ nx.gui.setString(this.rankSelf,"rank",myidx); nx.gui.setString(this.rankSelf,"dmg",my_val1); } }, onTryBat(){ if(this.lastChallenge > 0){ BCT.getInstance().requestOpenBattleRelevanceWindow(BCS.Fight_Type.SingleBoss,null,(_data)=>{ if(_data){ this.mod.reqBat(this.data.camp_id,(_data)=>{ if(_data){ this.mod.reqLimitData(this.data.camp_id); this.scheduleOnce(()=>{ this.mod.reqRank(this.data.camp_id); },3); } }); } }); }else{ return nx.tbox("lab_ladder_controller_tip3"); } }, onTryClear(){ if(this.lastChallenge > 0){ this.mod.reqBatClear(this.data.camp_id,(_data)=>{ if(_data){ this.mod.reqLimitData(this.data.camp_id); this.mod.reqRank(this.data.camp_id); } }); }else{ return nx.tbox("lab_ladder_controller_tip3"); } }, onOpenRank(){ let data = this.mod.vget("LimitChallengeRanks"); if(nx.dt.objEmpty(data))return; nx.bridge.createPanel("WndActLimitChalRank",{list:data.rank_list,camp_id:this.data.camp_id,config:this.chal_data}); }, onGetAward(){ if(this.data.camp_id){ this.mod.reqAward(this.data.camp_id,(_data)=>{ if(_data){ this.mod.reqLimitData(this.data.camp_id); this.mod.reqRank(this.data.camp_id); } }); } }, onClickRule(){ let TC = TipsController.getInstance(); if( TC ) { let config = this.chal_data.data_explain[1]; TC.showTextPanel(null,config.desc ); } }, } );