Files
2026-05-23 22:10:14 +08:00

131 lines
3.7 KiB
JavaScript

/******************************************************************
*
* 伙伴信息页 --- 基本属性
*
******************************************************************/
const BridgeComponent = require( "bridge.component" );
const HeroConst = require( "hero_const" );
const HeroEvent = require( "hero_event" );
const HeroControl = require( "hero_controller" );
cc.Class( {
extends: BridgeComponent,
properties: {
nodEquips: { default: null, type: cc.Node },
nodArtifacts: { default: null, type: cc.Node },
},
// 显示
onEnable: function() {
// 视图监听
this.vbind( [
[ "ShowPartner", this.onPartnerChanged.bind( this ) ]
] );
// 事件监听
this.bindGEvent( HeroEvent.Hero_Data_Update, this.onPartnerUpdate.bind( this ) );
this.bindGEvent( HeroEvent.Equip_Update_Event, this.onPartnerUpdate.bind( this ) );
},
// 隐藏
onDisable: function() {
// 视图监听解除
this.vunbind();
// 事件监听解除
this.unbindGEvents();
},
// 置空
setEmpty: function() {
nx.gui.setString( this, "lv/txt", "" );
nx.gui.setActive( this, "career", false );
nx.gui.setActive( this, "help", false );
nx.gui.setString( this, "atk/txt", "0" );
nx.gui.setString( this, "def/txt", "0" );
nx.gui.setString( this, "hp/txt", "0" );
nx.gui.setString( this, "speed/txt", "0" );
},
// 有伙伴数据更新
onPartnerUpdate: function( _vo ) {
if( _vo &&
this.partner &&
_vo.partner_id == this.partner.partner_id ) {
this.onPartnerChanged( _vo );
}
},
// 伙伴更新
onPartnerChanged: function( _partner ) {
this.partner = _partner;
// 置空
if( nx.dt.objEmpty( this.partner ) ) {
this.setEmpty();
return;
}
let key = this.partner.bid + "_" + this.partner.star;
let scfg = gdata( "partner_data", "data_partner_star", key );
if( nx.dt.objEmpty( scfg ) ) {
nx.error( "升级刷新失败,当前配置无效!", key );
return false;
}
let k1 = this.partner.type + "_" + this.partner.break_id + "_" + this.partner.break_lev;
let cbc = game.configs.partner_data.data_partner_brach[ k1 ];
if( nx.dt.objEmpty( cbc ) ) {
nx.error( "升级刷新失败,当前配置无效!", k1 );
return false;
}
// 等级
let maxlv = Math.max( cbc.lev_max, scfg.lev_max );
// let txt = `${this.partner.lev}/${maxlv}`;
nx.gui.setString( this, "lv/levs/lev", this.partner.lev );
nx.gui.setString( this, "lv/levs/max", maxlv );
// 职业
let career = this.partner.type || 4;
let icon = cc.path.join( "coms/images", "career" + career );
let name = nx.text.getKey(HeroConst.CareerName[ career ]) || nx.text.getKey( "lab_none" );
nx.gui.setActive( this, "career", false );
nx.gui.setString( this, "career/txt", nx.text.getKey( name ) );
nx.gui.setSpriteFrame( this, "career/icon", icon );
nx.gui.setActive( this, "help", true );
// 属性
nx.gui.setString( this, "atk/txt", this.partner.atk );
nx.gui.setString( this, "def/txt", this.partner.def );
nx.gui.setString( this, "hp/txt", this.partner.hp );
nx.gui.setString( this, "speed/txt", this.partner.speed );
},
// 点击详情
onTouchDetail: function() {
if( nx.dt.objNEmpty( this.partner ) ) {
const HC = HeroControl.getInstance();
HC.openHeroTipsAttrPanel( true, this.partner, true );
}
},
} );