273 lines
8.4 KiB
JavaScript
273 lines
8.4 KiB
JavaScript
/******************************************************************
|
|
*
|
|
* 限定挑戰
|
|
*
|
|
******************************************************************/
|
|
|
|
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 );
|
|
}
|
|
},
|
|
|
|
} ); |