Files
fc/dev/project/assets/Scripts/mod/backpack/cmps/cmp.item.detail.prop.skill.js
T
2026-05-23 22:10:14 +08:00

181 lines
5.4 KiB
JavaScript

const BackPackConst = require( "backpack_const" );
const PathTool = require( "pathtool" );
cc.Class( {
extends: cc.Component,
properties: {
nodList: {
default: null,
type: cc.Node,
displayName: "列表容器"
},
},
// 载入
onLoad: function() {
},
// 置空
setEmpty: function() {
nx.gui.hideAllChildren( this.nodList, "" );
},
// 设置道具
// @ 返回true:需要显示
setData: function( _item, _config, _fromBag ) {
// 全隐藏
if( !_item || !_config ) {
this.setEmpty();
return false;
}
// 获取配置
this.item = _item;
this.config = _config;
//判断是否需要展示套装属性
let skills = [];
if( this.config.sub_type == BackPackConst.item_sub_type.HOLYEQUIPMENT ) { //神裝
if( this.config.eqm_set != 0 ) {
this.suit_config = gdata( "partner_holy_eqm_data", "data_suit_info", this.config.eqm_set )
skills = this.setSuitSkill();
} else {
return false;
}
} else if( this.config.sub_type == BackPackConst.item_sub_type.SPECIAL ) {//特殊
if( this.item.extra ) {
skills = this.setArtSkill();
} else {
return false;
}
} else if( this.config.sub_type == BackPackConst.item_sub_type.ELFIN ) {//精灵
skills = this.setElfinSkill();
} else {
return false;
}
// 统计主属性信息
let props = skills;
// 空属性
if( nx.dt.arrEmpty( props ) ) {
this.setEmpty();
return false;
}
// 属性设置
const setProp = function( _node, _prop ) {
if( !_node || nx.dt.objEmpty( _prop ) ) {
return;
}
nx.bridge.setIcon( _node, "ico", _prop.icon );
nx.gui.setString( _node, "txt_lay/name", _prop.name );
nx.gui.setString( _node, "txt_lay/txt/view/content/desc", _prop.des );
};
// 列表创建
const chds = this.nodList.children;
nx.gui.gocChildren( this.nodList, "", props.length, chds[ 0 ] );
for( let i = 0; i < props.length; ++i ) {
setProp( chds[ i ], props[ i ] );
}
return true;
},
setElfinSkill() {
let list = [];
let id = this.item.base_id || this.item.item_id || this.item.id;
// console.log( JSON.stringify( this.config ) + "当前的技能信息 " + JSON.stringify( this.item ) );
let cur_elfin_cfg = gdata( "sprite_data", "data_elfin_data", id );
if( nx.dt.objEmpty( cur_elfin_cfg ) ) {
return false;
}
var config = gskilldata( 'data_get_skill', cur_elfin_cfg.skill );
list.push( config );
return list;
},
//设置符文技能
setArtSkill() {
let list = [];
for( var i in this.item.extra ) {
var value = this.item.extra[ i ];
if( value && value.extra_k && ( value.extra_k == 1 || value.extra_k == 2 || value.extra_k == 8 ) ) {
var config = gskilldata( "data_get_skill", [ value.extra_v ] );
if( config ) {
list.push( config );
}
}
}
return list;
},
// 设置神装技能
setSuitSkill: function() {
if( this.config == null ) {
return -1
}
if( this.suit_config == null ) {
return -1
}
// 按照套装排个序
this.suit_config.sort( function( a, b ) {
return a.num - b.num
} )
var name = null
var suit_list = []
let show_skill_id = null;
for( let index = 0; index < this.suit_config.length; index++ ) {
const element = this.suit_config[ index ];
if( name == null ) {
name = element.name
}
if( element.attr || element.skill_id ) {
if( this.config.sub_type == BackPackConst.item_sub_type.HOLYEQUIPMENT ) { //神裝
let suit = {}
let eqm_set = null
suit.count = element.num
suit.attr = element.skill_id[ element.skill_id.length - 1 ]
eqm_set = element.id
if( element.all_skill_desc ) {
suit.skill_desc = element.all_skill_desc[ element.all_skill_desc.length - 1 ]//神裝套裝描述
}
let star = eqm_set % 100
suit.suit_name = cc.js.formatStr( ( "%s★ Set(%s)" ), star, suit.count )
suit_list.push( suit )
}
}
}
var suit = suit_list[ suit_list.length - 1 ];
// 设置属性
let skill_list = [];
for( let index = 0; index < suit_list.length; index++ ) {
const element = suit_list[ index ];
if( typeof ( element.attr ) == "number" ) {
if( suit.skill_desc[ 0 ] && suit.skill_desc[ 0 ] == 2 ) {
show_skill_id = suit.attr;
let skill_cfg = gskilldata( 'data_get_skill', show_skill_id );
skill_list.push( skill_cfg );
}
}
}
return skill_list;
},
} );