Files
fc/dev/project/assets/Scripts/mod/partner/cmps/artifact/cmp.partner.artifact.js
T
2026-05-23 22:10:14 +08:00

313 lines
9.4 KiB
JavaScript

/******************************************************************
*
* 伙伴信息页 --- 战斗义肢相关
*
******************************************************************/
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 );
}
} );