Files

165 lines
5.5 KiB
JavaScript
Raw Permalink Normal View History

2026-05-23 22:10:14 +08:00
/******************************************************************
*
* 銀河奇遇
*
******************************************************************/
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 } );
},
} );