Files
fc/dev/project/library/imports/28/28ed0390-a484-441e-9797-701c5332635c.js
T

170 lines
4.8 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '28ed0OQpIREHpeXcBxTMmNc', 'cmp.item.detail.prop.skill');
// Scripts/mod/backpack/cmps/cmp.item.detail.prop.skill.js
"use strict";
var BackPackConst = require("backpack_const");
var PathTool = require("pathtool");
cc.Class({
"extends": cc.Component,
properties: {
nodList: {
"default": null,
type: cc.Node,
displayName: "列表容器"
}
},
// 载入
onLoad: function onLoad() {},
// 置空
setEmpty: function setEmpty() {
nx.gui.hideAllChildren(this.nodList, "");
},
// 设置道具
// @ 返回true:需要显示
setData: function setData(_item, _config, _fromBag) {
// 全隐藏
if (!_item || !_config) {
this.setEmpty();
return false;
}
// 获取配置
this.item = _item;
this.config = _config;
//判断是否需要展示套装属性
var 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;
}
// 统计主属性信息
var props = skills;
// 空属性
if (nx.dt.arrEmpty(props)) {
this.setEmpty();
return false;
}
// 属性设置
var setProp = function setProp(_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);
};
// 列表创建
var chds = this.nodList.children;
nx.gui.gocChildren(this.nodList, "", props.length, chds[0]);
for (var i = 0; i < props.length; ++i) {
setProp(chds[i], props[i]);
}
return true;
},
setElfinSkill: function setElfinSkill() {
var list = [];
var id = this.item.base_id || this.item.item_id || this.item.id;
// console.log( JSON.stringify( this.config ) + "当前的技能信息 " + JSON.stringify( this.item ) );
var 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: function setArtSkill() {
var 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 setSuitSkill() {
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 = [];
var show_skill_id = null;
for (var index = 0; index < this.suit_config.length; index++) {
var 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) {
//神裝
var _suit = {};
var 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]; //神裝套裝描述
}
var 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];
// 设置属性
var skill_list = [];
for (var _index = 0; _index < suit_list.length; _index++) {
var _element = suit_list[_index];
if (typeof _element.attr == "number") {
if (suit.skill_desc[0] && suit.skill_desc[0] == 2) {
show_skill_id = suit.attr;
var skill_cfg = gskilldata('data_get_skill', show_skill_id);
skill_list.push(skill_cfg);
}
}
}
return skill_list;
}
});
cc._RF.pop();