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

266 lines
8.2 KiB
JavaScript

/******************************************************************
*
* 战斗义肢 装配
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const FxSVC = require( "nx.fx.sv.expand" );
const BackPackConst = require( "backpack_const" );
const HeroConst = require( "hero_const" );
const HeroEvent = require( "hero_event" );
const HeroControl = require( "hero_controller" );
const HEHY = HeroConst.HolyequipmentPosList;
const BBC = BackPackConst.Bag_Code;
const BIT = BackPackConst.item_type;
const BITT = BackPackConst.item_sub_type;
cc.Class( {
extends: BridgeWindow,
properties: {
svcList: {
default: null,
type: FxSVC,
},
nodPartner: {
default: null,
type: cc.Node,
},
nodHolySlots: {
default: null,
type: cc.Node,
},
nodSlectPlans: {
default: null,
type: FxSVC,
},
nodSuitDes: {
default: null,
type: cc.Node,
}
},
onLoad : function(){
this.bindGEvent( HeroEvent.Hero_Open_Holy_Equipment_Cell_Event, this.freshHolyEqm.bind( this ) );
this.bindGEvent( HeroEvent.Hero_Get_Holy_Equipment_Plan_Event, this.freshHolyEqm.bind( this ) );
this.schlst = [];
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
let HC = HeroControl.getInstance();
let plans = _params.plans;
this.partner = _params.partner;
// console.log( JSON.stringify( this.partner ) + "方案数据 holy装配 伙伴数据" + JSON.stringify( plans ) );
if ( !nx.dt.objEmpty( plans ) ) {
this.freshHolyEqm( plans );
} else {
HC.sender25220(); //申请神装套装信息
}
nx.gui.setActive( this.nodSlectPlans.node, "", false );
},
onHolyPlanChanged: function(){
},
freshHolyEqm: function( _plans ){
let HC = HeroControl.getInstance();
let lst = [];
_plans = !_plans.holy_eqm_set_cell ? HC.getModel().getHolyEquipmentPlanDatad() : _plans;
let count = HC.getModel().getHolyPlanCount();
let num = _plans.num || count;
let datas = _plans.holy_eqm_set_cell;
let counts = game.configs.partner_holy_eqm_data.data_holy_suit_manage_length;
let cfg = game.configs.partner_holy_eqm_data.data_holy_suit_manage;
// console.log( JSON.stringify( this.partner ) + "当前的方案信息数据改变---" + JSON.stringify( datas ) );
for (let i in cfg ) {
if( i <= num ){
let sch = nx.dt.objClone( cfg[i] );
sch.partner_id = this.partner.partner_id;
sch.list = [];
if( datas ){
for (let j = 0; j < datas.length; j++) {
let msgHoly = datas[j];
if( msgHoly && sch.id == msgHoly.id ){
sch.name = msgHoly.name;
sch.partner_id = msgHoly.partner_id;
sch.dif_id = this.partner.partner_id;
sch.list = msgHoly.list;
}
}
}
sch.is_open = 1;
lst.push( sch );
}
}
this.freshSelectNod( lst );
// console.log( "当前的方案信息" + JSON.stringify( lst ) );
if( counts > lst.length ){
let new_data = nx.dt.objClone( cfg[num+1] );
lst.push( new_data );
}
this.schlst = lst;
this.svcList.rebuild( lst );
this.freshPartnerHolyInfo();
},
freshSelectNod: function( _info ){
// console.log( "当前的方案信息刷新sss" + JSON.stringify( _info ) );
this.nodSlectPlans.rebuild( _info );
},
freshPartnerHolyInfo: function(){
let partner_icon = nx.gui.getComponent( this.nodPartner, "", "cmp.item.base" );
if( partner_icon ){
partner_icon.setData( this.partner );
}
let holyeqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id );;
let slots = this.nodHolySlots;
let lst = HeroControl.getInstance().getModel().getHolyEquipSuitDes( holyeqms );
// console.log( "当前的伙伴holy数据更新" + JSON.stringify( lst ) );
for (let pos in HEHY ) {
let slot = nx.gui.find( slots, "slot"+ pos );
let eqm = holyeqms[pos];
let emt = nx.dt.objEmpty( eqm );
nx.gui.setActive( slot, "empty", emt );
nx.gui.setActive( slot, "tip", false );
nx.gui.setActive( slot, "item", !emt );
let cmp = nx.gui.getComponent( slot, "item", "cmp.item.base" );
if( cmp ){
if( !emt ){
cmp.setData( eqm );
}else{
cmp.setData( null );
}
}
}
nx.gui.setActive( this.nodSuitDes, "", !nx.dt.arrEmpty( lst ) );
if( !nx.dt.arrEmpty( lst ) ){
let nod = nx.gui.find( this.nodSuitDes, "desc" );
for (let i = 0; i < nod.children.length; i++) {
let des = lst[i];
// console.log( "当前的套装相关属性" + JSON.stringify( des ) );
if( des ){
nx.gui.setString( nod.children[i], "txt", des.name );
let path = cc.path.join( "coms/images/eqm_set" + Math.floor( des.id / 100 ) );
nx.gui.setSpriteFrame( nod.children[i], "ticon", path );
}else{
nx.gui.setString( nod.children[i], "txt", "" );
nx.gui.setSpriteFrame( nod.children[i], "ticon", "" );
}
}
}
},
onTouchSlot: function( _partId ){
let stype = parseInt( _partId );
// 取相关的战斗义肢
// 点击装备槽
const self = this;
const HC = HeroControl.getInstance();
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,
} )
}
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 );
};
// 更换
const change = function() {
HC.openHolyChangePanel( true, stype, self.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();
}
},
getSelectHoly: function( _index ){
let data = [];
let nodes = nx.gui.find( this.svcList, "srv/view/content" );
let cmp = nodes.children[_index].getComponent( "cmp.partner.holy.sch" );
if( cmp ){
data = cmp.mdata.list;
}
return data;
},
onTouchTakeOff: function(){
let HC = HeroControl.getInstance();
HC.sender11093( this.partner.partner_id, 0 , 0 );
},
onTouchSave: function(){
nx.gui.setActive( this.nodSlectPlans.node, "", !this.nodSlectPlans.node.active );
}
} );