Files
fc/dev/project/assets/Scripts/mod/partner/cmps/basic/cmp.partner.props.detail.wnd.js
T

108 lines
2.9 KiB
JavaScript
Raw Normal View History

2026-05-23 22:10:14 +08:00
/******************************************************************
*
* 伙伴属性详情界面
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const HeroControl = require( "hero_controller" );
const ATTR_BASE = [ 'atk', 'hp', 'def', 'speed' ];
const ATTR_EXTRA = [
'crit_rate', 'crit_ratio',
'hit_magic', 'dodge_magic',
'tenacity', 'hit_rate',
'res', 'dodge_rate',
'cure', 'be_cure',
'dam',
];
cc.Class( {
extends: BridgeWindow,
properties: {
lstBase: { default: null, type: cc.Node },
lstSpecail: { default: null, type: cc.Node },
lstOther: { default: null, type: cc.Node },
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
this.isMe = _params.is_my;
this.partner = _params.hero_vo;
// 无效
if( nx.dt.objEmpty( this.partner ) ) {
this.scheduleOnce( () => {
this.close();
}, 0.03 );
return;
}
// 基础刷新
this.freshBase();
// 加成刷新
if( this.isMe ) {
HeroControl.getInstance().sender11063( this.partner.partner_id, ( _ret, _data ) => {
if( _ret ) {
this.freshAdd( _data );
}
} );
}
},
// 基础刷新
freshBase: function() {
// 基础属性
const CHD = this.lstBase.children;
for( let i = 0; i < ATTR_BASE.length; ++i ) {
let node = CHD[ i ];
let key = ATTR_BASE[ i ];
node.name = key;
nx.bridge.attrs.setAttribute( node, [ key, this.partner[ key ], i + 1 ], false );
nx.gui.setActive( node, "add", false );
}
// 特殊属性
const CHS = this.lstSpecail.children;
for( let i = 0; i < ATTR_EXTRA.length; ++i ) {
let node = CHS[ i ];
let key = ATTR_EXTRA[ i ];
node.name = key;
nx.bridge.attrs.setAttribute( node, [ key, this.partner[ key ], i + 1 ] );
nx.gui.setActive( node, "add", false );
}
// 其他
},
// 基础刷新
freshAdd: function( _props ) {
if( nx.dt.objEmpty( _props ) ) {
return;
}
// 单加
let doAdd = function( _node ) {
let val = _props[ `skin_${ _node.name }` ] || 0;
if( val > 0 ) {
nx.gui.setActive( _node, "add", true );
let ret = nx.bridge.attrs.fmtAttribute( _node.name, val );
if( ret ) {
nx.gui.setString( _node, "add/num", ret.val );
}
}
};
// 基础属性
this.lstBase.children.forEach( _child => { doAdd( _child ); } );
this.lstSpecail.children.forEach( _child => { doAdd( _child ); } );
},
} );