/****************************************************************** * * 伙伴信息页 --- 镶嵌 * ******************************************************************/ const BridgeComponent = require( "bridge.component" ); const MallConst = require( "mall_const" ); const HeroEvent = require( "hero_event" ); const HeroControl = require( "hero_controller" ); const TipsController = require( "tips_controller" ); cc.Class( { extends: BridgeComponent, properties: { lstSkill: { default: null, type: cc.Node }, nodOps: { default: null, type: cc.Node }, }, // 显示 onEnable: function() { // 视图监听 this.vbind( [ [ "ShowPartner", this.onPartnerChanged.bind( this ) ] ] ); // 事件监听 this.bindGEvent( HeroEvent.Hero_Forget_Talent_Event, this.onPartnerUpdate.bind( this ) ); this.bindGEvent( HeroEvent.Hero_Level_Up_Talent_Event, this.onPartnerUpdate.bind( this ) ); this.bindGEvent( HeroEvent.Hero_Get_Talent_Event, this.onPartnerUpdate.bind( this ) ); this.bindGEvent( HeroEvent.Hero_Learn_Talent_Event, this.onPartnerUpdate.bind( this ) ); }, // 隐藏 onDisable: function() { // 视图监听解除 this.vunbind(); // 事件监听解除 this.unbindGEvents(); }, // 有伙伴数据更新 onPartnerUpdate: function( _vo ) { // console.log( "變化數據" ); if( _vo && this.partner && _vo.partner_id == this.partner.partner_id ) { this.onPartnerChanged( _vo ); nx.bridge.vset( "ShowPartner", _vo ); } }, // 伙伴更新 onPartnerChanged: function( _partner ) { this.partner = _partner; // 判空 if( nx.dt.objEmpty( this.partner ) ) { this.setEmpty(); return; } // 刷新 this.freshSkills(); }, // 置空 setEmpty: function() { nx.gui.setActive( this, "mod/list", false ); nx.gui.setActive( this, "mod/ops", false ); }, // 刷新 freshSkills: function() { const self = this; const chds = this.lstSkill.children; const sks = this.partner.talent_skill_list; const cfgs = game.configs.partner_skill_data.data_partner_skill_pos; const slvs = game.configs.partner_skill_data.data_partner_skill_level; // 单刷 const fresh = function( _pos ) { let cfg = cfgs[ _pos ]; let node = chds[ _pos - 1 ]; // 是否未解锁 if( nx.dt.arrNEmpty( cfg.pos_limit ) && cfg.pos_limit[ 0 ] == "star" && self.partner.star < cfg.pos_limit[ 1 ] ) { nx.gui.setActive( node, "nor", false ); nx.gui.setActive( node, "empty", false ); nx.gui.setActive( node, "lock", true ); nx.gui.setString( node, "lock/txt", cfg.pos_limit[ 1 ] + nx.text.getKey( "lab_starOpen" ) ); return; } // 已经解锁 let sk = sks[ cfg.pos ]; if( sk ) { let data = gskilldata( 'data_get_skill', sk ); if( data ) { nx.gui.setActive( node, "empty", false ); nx.gui.setActive( node, "lock", false ); let nor = nx.gui.setActive( node, "nor", true ); if( nor ) { let cmp = nx.gui.getComponent( nor, "icon", "cmp.skill.base" ); if( cmp ) { cmp.setData( data ); } let max = true; let lcfg = slvs[ sk ]; if( lcfg && nx.dt.numPositive( lcfg.next_id, false ) ) { max = false; } nx.gui.setActive( nor, "ops/up", !max ); nx.gui.setActive( nor, "level/txt", !max ); nx.gui.setActive( nor, "level/max", max ); if( !max ) { nx.gui.setString( nor, "level/txt", "Lv." + data.level ); } } return; } } // 空 nx.gui.setActive( node, "nor", false ); nx.gui.setActive( node, "empty", true ); nx.gui.setActive( node, "lock", false ); }; // 技能刷新 nx.gui.setActive( this, "mod/list", true ); for( let pos in cfgs ) { fresh( pos ); } // 操作刷新 nx.gui.setActive( this, "mod/ops", true ); }, // 点击:技能学习 onTouchSKAdd: function( _pos ) { console.log( "onTouchSKAdd:" + _pos ); let pos = parseInt( _pos ); if( !nx.dt.numPositive( pos, false ) ) { nx.error( "无效技能位置:", _pos ); return; } let HC = HeroControl.getInstance(); HC.openHeroTalentSkillLearnPanel( true, this.partner, ( _id ) => { let sid = parseInt( _id ); if( nx.dt.numPositive( sid, false ) ) { HC.sender11096( this.partner.partner_id, pos, sid ); } } ); }, // 点击:技能升级 onTouchSKUp: function( _pos ) { console.log( "onTouchSKUp:" + _pos ); let pos = parseInt( _pos ); if( !nx.dt.numPositive( pos, false ) ) { nx.error( "无效技能位置:", _pos ); return; } let id = this.partner.talent_skill_list[ _pos ]; if( !nx.dt.numPositive( id, false ) ) { nx.error( "无效技能:", _pos, id ); return; } let HC = HeroControl.getInstance(); HC.openHeroTalentSkillLevelUpPanel( true, this.partner, id, ( _ret ) => { if( _ret ) { HC.sender11097( this.partner.partner_id, pos ); } }); }, // 点击:技能遗忘 onTouchSKDel: function( _pos ) { console.log( "onTouchSKDel:" + _pos ); let pos = parseInt( _pos ); if( !nx.dt.numPositive( pos, false ) ) { nx.error( "无效技能位置:", _pos ); return; } let id = this.partner.talent_skill_list[ _pos ]; if( !nx.dt.numPositive( id, false ) ) { nx.error( "无效技能:", _pos, id ); return; } // 文本组织 let HC = HeroControl.getInstance(); let str = nx.text.getKey( "AskForgetTalent" ); let cbk = game.configs.partner_skill_data.data_partner_skill_back[ id ]; if( nx.dt.objNEmpty( cbk ) && nx.dt.arrNEmpty( cbk.expend ) ) { // 需要 let frame_arrays = []; str = nx.text.getKey( "lab_hero_talent_skill_level_up_window_tip4" ); for( let i = 0; i < cbk.expend.length; ++i ) { let v = cbk.expend[ i ] let item_config = Utils.getItemConfig( v[ 0 ] ) if( item_config ) { if( i != 0 ) { str = str + ", " } let good_res_path = "3"; let text = StringUtil.parseStr( nx.text.getKey( "
%s
" ) ).string let good_path = PathTool.getIconPath( "items", "3" ); frame_arrays.push( good_path ); let str1 = cc.js.formatStr( text, good_res_path, v[ 1 ] ) str = str + str1 } } // 返还 if( cbk.award1.length > 0 ) { str = str + nx.text.getKey( "lab_hero_talent_skill_level_up_window_tip5" ) for( let i = 0; i < cbk.award1.length; ++i ) { let v = cbk.award1[ i ] let item_config = Utils.getItemConfig( v[ 0 ] ) if( item_config ) { if( i != 0 ) { str = str + ", " } let good_res_path = item_config.icon let text = StringUtil.parseStr( nx.text.getKey( "
%s
" ) ).string let good_path = PathTool.getIconPath( "items", item_config.icon ); frame_arrays.push( good_path ); let str1 = cc.js.formatStr( text, good_res_path, v[ 1 ] ) str = str + str1 } } str = str + ")" } } let self = this; let pid = this.partner.partner_id; nx.mbox( str, [ 'cancel', 'confirm' ], ( _key, _box ) => { _box.close(); if( _key == 'confirm' ) { HC.sender11098( pid, pos ); // self.close(); } } ); }, // 点击:说明 onTouchHelp: function() { const data = game.configs.partner_skill_data.data_partner_skill_const.skill_rule; if( nx.dt.objNEmpty( data ) && nx.dt.strNEmpty( data.desc ) ) { const TC = TipsController.getInstance(); TC.showTextPanel( "tip", data.desc ); } }, // 点击:预览 onTouchPreview: function() { let HC = HeroControl.getInstance(); HC.openArtifactSkillWindow( true, 2 ); }, // 点击:商店 onTouchShop: function() { nx.bridge.jumper.jump2Window ( 2, [MallConst.MallType.SkillShop] ); }, } );