/****************************************************************** * * 伙伴信息页 --- 战斗义肢相关 * ******************************************************************/ const BridgeComponent = require( "bridge.component" ); const HeroConst = require( "hero_const" ); const HeroEvent = require( "hero_event" ); const HeroControl = require( "hero_controller" ); const TipsController = require( "tips_controller" ); const HEHY = HeroConst.HolyequipmentPosList; const BattleController = require( "battle_controller" ); const BattleConst = require( "battle_const" ); const PrayMod = require( "pray.mod" ); const NxSpine = require( "nx.fx.spine" ); cc.Class( { extends: BridgeComponent, properties: { nodSlots: { default: null, type: cc.Node }, nodEnergy: { default: null, type: cc.Node }, nodSuit: { default: null, type: NxSpine }, }, // 显示 onEnable: function() { // 视图监听 this.vbind( [ [ "ShowPartner", this.onPartnerChanged.bind( this ) ] ] ); // // 事件监听 刷新当前的战斗义肢相关 this.bindGEvent( HeroEvent.Holy_Equipment_Update_Event, this.onPartnerUpdate.bind( this ) ); }, // 隐藏 onDisable: function() { // 视图监听解除 this.vunbind(); // 事件监听解除 this.unbindGEvents(); }, // 有伙伴数据更新 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; } // 刷新 this.freshUIBySlots(); }, // 置空 setEmpty: function() { nx.gui.setActive( this, "mod/list", false ); nx.gui.setActive( this, "mod/ops", false ); }, freshUIBySlots: function( _data ){ // 空处理 let slots = this.nodSlots; let self = this; let enode = this.nodEnergy; let holy_eqm_list = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id ) || {}; let empty = function( _sc = false ) { // 卡槽置空 slots.children.forEach( _c => { nx.gui.setActive( _c, "item", false ); nx.gui.setActive( _c, "tip", false ); nx.gui.setActive( _c, "empty", true ); } ); nx.gui.hideAllChildren( enode ); }; // empty( true ); // 判空 if( nx.dt.objEmpty( this.partner ) || nx.dt.objEmpty( holy_eqm_list ) ) { empty( true ); return; } for ( let pos in HEHY ) { let eqm = holy_eqm_list[pos]; // 当前装备 let emt = nx.dt.objEmpty( eqm ); let slot = nx.gui.find( slots, "slot" + pos ); nx.gui.setActive( slot, "item", !emt ); nx.gui.setActive( slot, "empty", emt ); nx.gui.setActive( slot, "tip", false ); if( !emt ){ let posid = parseInt( pos ); let uiPos = 0; switch( posid ){ case 23 : { uiPos = 1 };break; case 24 : { uiPos = 3 };break; case 25 : { uiPos = 2 };break; case 26 : { uiPos = 4 };break; } let path = cc.path.join( "prefab/partner/holy/ui/" + ( parseInt( eqm.config.eqm_set / 100 ) ) + "-" + uiPos ); nx.gui.setSpriteFrame( enode, ( "e"+ pos ), path ); } nx.gui.setActive( enode, ( "e"+ pos ), !emt ); if( !emt ) { let cmp = nx.gui.getComponent( slot, "item", "cmp.item.base" ); if( cmp ) { cmp.setData( eqm ); } } } let suitPath = ""; let suitType = 0; let holyeqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id );; let lst = HeroControl.getInstance().getModel().getHolyEquipSuitDes( holyeqms ); if( nx.dt.arrNEmpty( lst ) ){ for (let l = 0; l < lst.length; l++) { let suit = lst[l]; if( suit.num == 4 ){ suitType = parseInt( suit.id % 100 ); break; } } } switch( suitType ){ case 1 : { suitPath = "resDB/effects/E99992/action" }; break; case 2 : { suitPath = "resDB/effects/E99993/action" }; break; case 3 : { suitPath = "resDB/effects/E99994/action" }; break; case 4 : { suitPath = "resDB/effects/E99995/action" }; break; case 5 : { suitPath = "resDB/effects/E99996/action" }; break; } if( nx.dt.strNEmpty( suitPath ) ){ this.nodSuit.load( suitPath, ( _e ) => { if( !_e ) { this.nodSuit.action( "action", true ); } else { this.nodSuit.stop(); } } ); nx.gui.setActive( this.nodSuit.node, "", true ); }else{ nx.gui.setActive( this.nodSuit.node, "", false ); } }, onTouchSlot: function( _partId ){ let stype = parseInt( _partId ); // 取相关的战斗义肢 // 点击装备槽 const self = this; const HC = HeroControl.getInstance(); const eqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id ); const eqm = eqms[ _partId ]; // 脱下 const takeoff = function() { HC.sender11093( self.partner.partner_id, eqm.id, 0 ); }; // 洗炼 const refinement = function() { HC.openHolyequipmentRefreshAttPanel( true, eqm, self.partner ); }; let partner = HC.getModel().getHeroById( self.partner.partner_id ); // 更换 const change = function() { /********* * "list":[{"partner_id":17,"item_id":4},{"partner_id":17,"item_id":2},{"partner_id":17,"item_id":3},{"partner_id":17,"item_id":1}] */ let holyLst = []; let eqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( self.partner.partner_id ); for (let i in eqms ) { let eqm = eqms[i]; holyLst.push( { partner_id: self.partner.partner_id, item_id : eqm.id, } ) } // console.log( "当前的伙伴战斗义肢携带信息" + JSON.stringify( holyLst ) ); HC.openHolyChangePanel( true, stype, partner, holyLst, ( _id, _panel ) => { // _panel.close(); HC.sender11093( self.partner.partner_id, _id , 1 ); }, ( _data ) =>{ HC.sender11093( _data.partner.partner_id, _data.eqm , 0 ); } ); }; // 当前装备操作 if( eqm ) { HC.openEquipChangePanel( true, eqm, ( _op, _panel ) => { _panel.close(); if( _op == "takeoff" ) { takeoff(); } if( _op == "change" ) { change(); } if( _op == "refinement" ) { refinement(); } } ); } // 新装备穿戴 else { change(); } }, // 点击:说明 onTouchHelp: function() { const data = game.configs.partner_holy_eqm_data.data_const.game_rule_1; if( nx.dt.objNEmpty( data ) && nx.dt.strNEmpty( data.desc ) ) { const TC = TipsController.getInstance(); TC.showTextPanel( "tip", data.desc ); } }, // 点击:预览 onTouchPreview: function() { let titles = []; let top_titles = game.configs.partner_holy_eqm_data.data_suit_res_prefix; for (let i in top_titles ) { let title = top_titles[i]; titles.push( title ); } // game.configs.partner_holy_eqm_data.data_const.handbook_unlock_condition; let HC = HeroControl.getInstance(); HC.openHeroClothesLustratWindow( true, titles ); // HC.openArtifactSkillWindow( true, 2 ); }, // 点击:商店 onTouchShop: function() { let pray = PrayMod.getInstance(); let score = pray.getScore(); nx.bridge.createPanel( "WndHolyPrayShop", { score : score, } ); }, // 点击:祈禱 onTouchPray: function() { nx.bridge.createPanel( "WndHolyPray" ); }, onTouchAssemble: function() { let HC = HeroControl.getInstance(); let model = HC.getModel(); let plans = model.getHolyEquipmentPlanDatad(); let partner = model.getHeroById( this.partner.partner_id ); HC.openHolyequipmentPlanPanel( true, plans, partner ); }, // 点击:属性加成 onTouchBonus: function() { let HC = HeroControl.getInstance(); HC.sender11086( this.partner.partner_id ); }, onTouchDun: function(){ BattleController.getInstance().requestOpenBattleRelevanceWindow( BattleConst.Fight_Type.HeavenWar ); } } );