165 lines
5.5 KiB
JavaScript
165 lines
5.5 KiB
JavaScript
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 銀河奇遇
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
const ActPopup = require( "act.popup.base" );
|
||
|
|
const EncounterMod = require( "act.encounter.mod" );
|
||
|
|
const HCT = require( "hero_controller" );
|
||
|
|
const FID = require( "bridge.function.ids" );
|
||
|
|
const PartnerConst = require( "partner_const" );
|
||
|
|
const HeroVo = require( "hero_vo" );
|
||
|
|
cc.Class( {
|
||
|
|
|
||
|
|
extends: ActPopup,
|
||
|
|
|
||
|
|
properties: {
|
||
|
|
items: {
|
||
|
|
default: [],
|
||
|
|
type: [ cc.Node ]
|
||
|
|
},
|
||
|
|
},
|
||
|
|
|
||
|
|
// 初始化
|
||
|
|
onLoad: function() {
|
||
|
|
this.mod = EncounterMod.getInstance();
|
||
|
|
this.fake_data = game.configs.fake_battle_data;
|
||
|
|
this.GetRewardsList = {};
|
||
|
|
this.settings = {};//配置處理,需要發送到佈陣界面
|
||
|
|
// 活动监听
|
||
|
|
this.mod.vbind( this, [
|
||
|
|
[ "EncounterData", this.freshData.bind( this ) ],
|
||
|
|
] );
|
||
|
|
},
|
||
|
|
|
||
|
|
onOpenConfigs( _params ) {
|
||
|
|
|
||
|
|
this._super( _params );
|
||
|
|
this.setTips();
|
||
|
|
this.mod.send31000( () => {
|
||
|
|
this.mod.tryGuide();
|
||
|
|
} );
|
||
|
|
},
|
||
|
|
|
||
|
|
setTips() {
|
||
|
|
for( let i in this.items ) {
|
||
|
|
let nd = this.items[ i ];
|
||
|
|
if( nd ) {
|
||
|
|
let tip = nx.gui.find( nd, "tog/tip" );
|
||
|
|
let dot = nx.gui.getComponent( tip, "", "nx.vb.visible" );
|
||
|
|
if( !dot ) {
|
||
|
|
nx.gui.setActive( dot, "", false );
|
||
|
|
} else {
|
||
|
|
let key = this.mod.getTipKey( this.mod.tipKeys()[ i ] );
|
||
|
|
dot.setTarget( nx.mTip, key );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
onPreClosed() {
|
||
|
|
// 活动监听解除
|
||
|
|
if( this.mod ) {
|
||
|
|
this.mod.vunbind( this );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
freshData( data ) {
|
||
|
|
if( nx.dt.objEmpty( data ) ) return;
|
||
|
|
let len = this.items.length;
|
||
|
|
let data_info = this.fake_data.data_info;
|
||
|
|
for( let i = 0; i < len; i++ ) {
|
||
|
|
let item = this.items[ i ];
|
||
|
|
let info = data_info[ i + 1 ];
|
||
|
|
if( info ) {
|
||
|
|
nx.gui.setString( item, "name/txt", info.name );
|
||
|
|
let is_bat = false;//可以挑戰
|
||
|
|
let is_finish = false;//挑戰完成
|
||
|
|
is_bat = info.unlock.length == 0;
|
||
|
|
for( let idx in data.ids ) {
|
||
|
|
if( data.ids[ idx ].id >= info.unlock[ 0 ] ) {
|
||
|
|
is_bat = true;
|
||
|
|
}
|
||
|
|
if( data.ids[ idx ].id == info.id ) {
|
||
|
|
is_finish = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( is_finish ) {
|
||
|
|
nx.gui.setString( item, "tog/on/txt", nx.text.getKey( "ChallengeAgain" ) );
|
||
|
|
} else {
|
||
|
|
nx.gui.setString( item, "tog/on/txt", nx.text.getKey( "Goto" ) );
|
||
|
|
}
|
||
|
|
nx.gui.setActive( item, "tog/on", is_bat );
|
||
|
|
nx.gui.setActive( item, "tog/off", !is_bat );
|
||
|
|
|
||
|
|
let is_get = false;//領取獎勵
|
||
|
|
for( let _id in data.reward_ids ) {
|
||
|
|
if( data.reward_ids[ _id ].id == info.id ) {
|
||
|
|
is_get = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( is_finish && !is_get ) {//完成挑戰且未領取獎勵
|
||
|
|
this.GetRewardsList[ info.id ] = true;
|
||
|
|
nx.gui.setString( item, "tog/on/txt", nx.text.getKey( "RewardGet" ) );
|
||
|
|
} else {
|
||
|
|
this.GetRewardsList[ info.id ] = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
createHeroList( data ) {
|
||
|
|
let enemys = data.partner_id;
|
||
|
|
let heros = [];
|
||
|
|
let pos_id = 0;
|
||
|
|
//可選英雄列表
|
||
|
|
for( let i in enemys ) {
|
||
|
|
let id = enemys[ i ];
|
||
|
|
let unit_data = Utils.getUnitConfig( id );
|
||
|
|
if( unit_data && unit_data.head_icon ) {
|
||
|
|
let hero = new HeroVo();
|
||
|
|
let pconfig = game.configs.partner_data.data_partner_base[ Number( unit_data.head_icon ) ];
|
||
|
|
pconfig.lev = unit_data.lev;
|
||
|
|
pconfig.star = unit_data.star;
|
||
|
|
pconfig.is_try = 1;//試用 0 1
|
||
|
|
hero.updateHeroVo( pconfig );
|
||
|
|
hero.partner_id = id;
|
||
|
|
heros.push( hero );
|
||
|
|
if( id == data.required_partner[ 0 ][ 0 ] ) {
|
||
|
|
pos_id = hero.partner_id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//基礎佈陣信息,精靈和行星武器都為空
|
||
|
|
this.settings.hero_list = heros;
|
||
|
|
this.settings.formation_type = data.formation;
|
||
|
|
this.settings.tag_pos = { pos: data.required_partner[ 0 ][ 1 ], id: pos_id };
|
||
|
|
this.settings.id = data.id;
|
||
|
|
},
|
||
|
|
|
||
|
|
touchChallenge( _index ) {
|
||
|
|
let data = this.fake_data.data_info[ _index ];
|
||
|
|
let is_reward = this.GetRewardsList[ data.id ];
|
||
|
|
if( is_reward ) {//有獎勵要領取
|
||
|
|
this.mod.send31002( data.id );
|
||
|
|
} else {//挑戰
|
||
|
|
this.createHeroList( data );
|
||
|
|
HCT.getInstance().openFormGoFightPanel( true, PartnerConst.Fun_Form.Encounter, this.settings, 4, false, () => {
|
||
|
|
nx.bridge.jumper.jump2Window( FID.StarUserTramp );
|
||
|
|
} );
|
||
|
|
this.close();
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
touchDetail( _index ) {
|
||
|
|
let data = this.fake_data.data_info[ _index ];
|
||
|
|
if( !data ) return;
|
||
|
|
nx.bridge.createPanel( "WndActEncounterDetail", { target_id: data.target_id, reward: data.reward } );
|
||
|
|
},
|
||
|
|
|
||
|
|
} );
|