Files
fc/dev/project/assets/Scripts/mod/battle/cmp/cmp.item.battle.buffinfo.js
2026-05-23 22:10:14 +08:00

185 lines
6.3 KiB
JavaScript

const SVCItem = require("nx.fx.sv.expand.item")
var BattleController = require("battle_controller");
var HeroVo = require("hero_vo");
const Dir_Type = {
Left : 1, // 左边英雄
Right : 2 // 右边英雄
}
cc.Class({
extends: SVCItem,
properties: {
container:{
default:null,
type:cc.Node
},
fab_partner:{
default:null,
type:cc.Prefab
},
head:{
default:null,
type:cc.Node
},
touch_layout:{
default:null,
type:cc.Node
},
buff_item:{
default:null,
type:cc.Node
},
list:{
default:null,
type:cc.Node
}
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
// // 数据重置
// rebind: function( _idx, _data, _key ) {
// this._super( _idx, _data, _key );
// // 刷新
// this.ctrl = BattleController.getInstance();
// this.setData(_data)
// },
// update (dt) {},
setData(data){
if(nx.dt.objEmpty(data)){
return;
}
this.data = data;
nx.bridge.NodeChidrenDestroy(this.list);
//英雄头像
if(!this.hero_head){
this.hero_head = cc.instantiate(this.fab_partner);
this.hero_head.parent = this.head;
this.hero_head.position = cc.v2(0,-5);
this.hero_head.children[1].active = false;
}
// this.head.x = 35;
// this.list.x = 80;
// if(data.dir == Dir_Type.Right){
// this.head.x = 245;
// this.list.x = 10;
// }
let info = data.role.role_data
// -- 头像
let hero_vo = new HeroVo();
hero_vo.face_id = "";
if(game.configs.partner_data.data_partner_base[info.object_bid]){
hero_vo.bid = info.object_bid
hero_vo.star = info.star
}else{
let config = (id)=>{
return gunitdata("data_unit",id)// || gunitdata("data_unit2",id) ||gunitdata("data_unit3",id)
}
let unit_config = config(data.role.role_data.object_bid)
if(unit_config){
hero_vo.bid = Number(unit_config.head_icon)
if(unit_config.star && unit_config.star > 0){
hero_vo.star = unit_config.star
}else{
let base_config = game.configs.partner_data.data_partner_base[hero_vo.bid]
if(base_config){
hero_vo.star = base_config.init_star
}
}
hero_vo.master_head_id = hero_vo.bid
}
}
hero_vo.camp_type = info.camp_type;
hero_vo.lev = info.lev;
hero_vo.use_skin = info.fashion;
let cmp = this.hero_head.getComponent("cmp.partner.com");
cmp.rebind( 0,hero_vo,"")
// -- buff 图标
let temp_list = {};
let temp_group_list = {};
this.buff_list_item = {};
for(let i in data.role.buff_list){
let v = data.role.buff_list[i]
if(v == null){
continue
}
let buff_config = v.config;
let buff = v.buff;
let res_id = buff_config.icon;
// -- 根据配置表判断一下,如果角色死亡,buff是否为需要清除的
if(res_id != null && res_id != 0 && (info.hp > 0 || (buff_config.clean_when_dead != null && buff_config.clean_when_dead == "false"))){
if(temp_list[res_id] == null){
temp_list[res_id] = {res_id:res_id, num:0, name:buff_config.name, remain_round:buff.remain_round, desc:buff_config.desc, buff_infos : []}
}
if(temp_list[res_id].num == 0 || (buff_config.join_type && buff_config.join_type != 3)){
temp_list[res_id].num = temp_list[res_id].num + 1
temp_list[res_id].buff_infos.push({buff_id:buff_config.bid, remain_round:buff.remain_round})
if(buff_config.group){
temp_group_list[buff_config.group] = true
}
}else if(buff_config.join_type && buff_config.join_type == 3 && buff_config.group && !temp_group_list[buff_config.group]){
temp_group_list[buff_config.group] = true
temp_list[res_id].num = temp_list[res_id].num + 1
temp_list[res_id].buff_infos.push({buff_id:buff_config.bid, remain_round:buff.remain_round})
}
}
}
this.buff_list_data = []
for(let k in temp_list){
let v = temp_list[k]
this.buff_list_data.push(v)
}
this.buff_list_data.sort(function(a,b){
return a.res_id - b.res_id
})
BattleController.getInstance().updateBattleBuffListView(this.buff_list_data, info.group, info.object_bid)
for(let k=0;k<this.buff_list_item.length;++k){
let buff_object = this.buff_list_item[k]
if(buff_object){
buff_object.active = false;
}
}
for(let i=0;i<this.buff_list_data.length;++i){
let bData = this.buff_list_data[i]
let num = i + 1
if(num <= 8){ //-- 最多显示8个
let buff_object = this.buff_list_item[i]
if(buff_object == null){
buff_object = this.createBuffItem();
buff_object.parent = this.list;
this.buff_list_item[i] = buff_object;
}
buff_object.active = true;
buff_object.getChildByName("num").getComponent(cc.Label).string = bData.num;
// -- 位置
let buff_icon_id = bData.res_id
let buff_path = PathTool.queryIconPath(buff_icon_id)
nx.gui.setSpriteFrame(buff_object,"",buff_path);
}
}
},
createBuffItem(){
let node = cc.instantiate(this.buff_item);
return node;
},
openBuffList(){
if(this.buff_list_data && Utils.next(this.buff_list_data) != null){
BattleController.getInstance().openBattleBuffListView(true, this.buff_list_data, this.data.group, this.data.object_bid)
}
}
});