Files
fc/dev/project/assets/Scripts/zbridge/utils/bridge.utils.item.js
T
2026-05-23 22:10:14 +08:00

242 lines
7.6 KiB
JavaScript

/*******************************************************************************
*
* 老版本桥接过渡 --- 封装一些道具相关的整合方法
*
*
******************************************************************************/
// 转换图标必要数据
// 1: 伙伴对象
// 2: 伙伴bid/配置
// 3: 背包物品对象
// 4: 物品id/配置
const data2Icon = function( _data ) {
// 判空
if( !_data ) {
return null;
}
// 无需转换
if( nx.dt.strGood( _data._flag ) ) {
return _data;
}
// 必要数据
let info = {
_flag : "", // 数据来源
id : 0, // 伙伴序列
bid : 0, // 伙伴编号
item_id : 0, // 物品编号
quality : 0, // 品质
icon : 0, // 图标
count : 0, // 数量
level : 0, // 等级
name : "", // 名字
desc : "", // 描述
stars : 0, // 星级
camp_type : 0, // 阵营
type : 0, // 物品类型
sub_type : 0, // 物品子类型
eqm_set : 0, // 神装等级
eqm_jie : 0, // 神装评价
wing_lv : 0, // 僚机等级
in_team : 0, // 是否出战
};
// 参数为ID先进行配置查询
let params = _data;
if( nx.dt.numGood( _data ) ) {
// 作为伙伴bid/物品id来进行配置查找
params = game.configs.partner_data.data_partner_base[_data];
if( !params ) {
params = Utils.getItemConfig( _data );
}
// 未找到
if( !params ) {
nx.error( "[ItemInfo]无效物品编号:", _data );
return null;
}
}
// [id,num]结构
if( nx.dt.arrGood( _data ) && _data.length == 2 ) {
let id = _data[0];
// 作为伙伴bid/物品id来进行配置查找
params = game.configs.partner_data.data_partner_base[id];
if( !params ) {
params = Utils.getItemConfig( id );
}
// 未找到
if( !params ) {
nx.error( "[ItemInfo]无效物品编号:", id );
return null;
}
info.count = _data[1] || 0;
}
// { bid, num }结构
if( nx.dt.objLen( _data ) <= 4 &&
nx.dt.numPositive( _data.bid, false ) &&
nx.dt.numPositive( _data.num, true ) ) {
let id = _data.bid;
// 作为伙伴bid/物品id来进行配置查找
params = game.configs.partner_data.data_partner_base[id];
if( !params ) {
params = Utils.getItemConfig( id );
}
// 未找到
if( !params ) {
nx.error( "[ItemInfo]无效物品编号:", id );
return null;
}
info.count = _data.num || 0;
}
// 非对象错误
if( nx.dt.objEmpty( params ) ) {
// nx.error( "[ItemInfo]无效配置" );
return null;
}
let item_cfg = null;
// 伙伴对象
if( nx.dt.fnGood( params.updateHeroVo ) ) {
info._flag = 'hero';
info.id = params.id;
info.bid = params.bid;
info.item_id = params.item_id || game.configs.partner_data.data_partner_base[params.bid].item_id;
info.level = params.lev;
info.camp_type = params.camp_type;
info.stars = params.star;
info.name = params.name;
// 使用皮肤
if( nx.dt.numPositive( params.use_skin, false ) ) {
let SKIN = game.configs.partner_skin_data.data_skin_info[params.use_skin];
if( SKIN ) {
info.icon = SKIN.head_id;
}
}
//key:5代表拥有皮肤数据,value:0代表原始皮肤
let ext_data = params.ext_data;
if(!nx.dt.arrEmpty(ext_data)
&& (ext_data[0].key == 5 || ext_data[0].id == 5)
&&( ext_data[0].value>0 || ext_data[0].val>0)){
let skin_id = ext_data[0].value || ext_data[0].val;
let SKIN = game.configs.partner_skin_data.data_skin_info[skin_id];
if( SKIN ) {
info.icon = SKIN.head_id;
}
}else{
params.ext_data = [];
}
}
//位面战争特殊伙伴对象,具有血量特殊属性
else if( nx.dt.numGood( params.hp_per ) ) {
info._flag = 'hero';
let partner_cfg = game.configs.partner_data.data_partner_base[params.bid];
info.id = params.partner_id;
info.bid = params.bid;
info.item_id = params.item_id || partner_cfg.item_id;
info.level = params.lev;
info.camp_type = partner_cfg.camp_type;
info.stars = params.star;
info.name = partner_cfg.name;
info.flag = params.flag;
info.hp_per = params.hp_per;
info.power = params.power;
info.ext_data = params.ext_data;
}
// 背包道具
else if( nx.dt.fnGood( params.setBaseId ) ) {
info._flag = 'bag';
info.id = params.id;
info.item_id = params.base_id;
info.level = params.lev;
info.quality = params.quality;
info.count = params.quantity;
info.type = params.type;
info.sub_type = params.sub_type;
item_cfg = params.config;
}
// 伙伴配置
else if( nx.dt.numGood( params.bid ) ) {
info._flag = 'partner';
info.bid = params.bid;
info.item_id = params.item_id;
info.name = params.name;
info.stars = params.init_star;
info.camp_type = params.camp_type;
info.quality = params.quality;
}
// 物品配置
else if( nx.dt.numGood( params.id ) ) {
info._flag = 'item';
info.item_id = params.id;
info.count = info.count || params.num || params.count || 0;
item_cfg = params;
}
// 物品配置补全
if( !item_cfg || nx.dt.strEmpty( item_cfg.name ) ) {
item_cfg = Utils.getItemConfig( info.item_id );
if( !item_cfg ) {
nx.error( "[ItemInfo]无效物品编号:", info.item_id );
return null;
}
}
// 补全
info.quality = info.quality || item_cfg.quality;
info.icon = info.icon || item_cfg.icon;
info.level = info.level || item_cfg.lev;
info.name = info.name || item_cfg.name;
info.desc = info.desc || item_cfg.desc;
info.camp_type = info.camp_type || item_cfg.camp_type;
info.eqm_set = info.eqm_set || item_cfg.eqm_set;
info.eqm_jie = info.eqm_jie || item_cfg.eqm_jie || 0;
info.stars = info.stars || item_cfg.eqm_star || 0;
info.wing_lv = info.wing_lv || item_cfg.lev;
info.type = info.type || item_cfg.type;
info.sub_type = info.sub_type || item_cfg.sub_type;
info.mark = item_cfg.mark || 0;//稀有特效,部分道具拥有该参数
info.desc_client = nx.dt.arrNEmpty( item_cfg.client_effect ) ? item_cfg.client_effect[0] : "";//稀有特效,部分道具拥有该参数
// 追加头像
if( nx.dt.numGood( _data.face ) || nx.dt.numGood( _data.face_id ) || nx.dt.numGood( _data.tar_face )
|| nx.dt.numGood( _data.a_face ) || nx.dt.numGood( _data.b_face ) || nx.dt.numGood( _data.head_icon )
|| nx.dt.numGood( _data.def_face ) || nx.dt.numGood( _data.atk_face ) || nx.dt.numGood( _data._faceid ) ) {
info.face = _data.face || _data.face_id || _data.tar_face || _data.a_face || _data.b_face || _data.head_icon || _data.def_face || _data.atk_face || _data._faceid;
info.data = _data;
info.avatar = _data.avatar_id || _data.avatar_base_id || _data.avatar_bid || _data.avatar;
}
return info;
};
// 导出
module.exports = {
data2Icon,
}