/****************************************************************** * * 銀河奇遇 * ******************************************************************/ 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 } ); }, } );