/****************************************************************** * * 伙伴属性详情界面 * ******************************************************************/ 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 ); } ); }, } );