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

184 lines
5.7 KiB
JavaScript

const NxSpine = require( "nx.fx.spine" );
const ItemBase = require( "nx.fx.sv.expand.item" )
var PathTool = require( "pathtool" )
cc.Class( {
extends: ItemBase,
properties: {
is_in_form: {
default: false,
displayName: "是否在布阵"
},
spMini: {
default: null,
type: NxSpine
}
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
start() {
},
setVisable( status ) {
if( status ) {
} else {
}
},
onEnable(){
},
onDisable(){
// this.spMini.stop();
},
// 置空
setEmpty: function() {
this.spMini.stop();
nx.gui.setActive( this.node, "lev", true );
nx.gui.setActive( this.node, "star", true );
nx.gui.setActive( this.node, "camp", true );
nx.gui.setActive( this.node, "bg", true );
// 等级
nx.gui.setString( this.node, "lev", "" );
},
//根据不同的id处理数据
checkId( partner ) {
//unit_type.skin
let skin_cfg = game.configs.partner_skin_data.data_skin_info[ partner.use_skin ];
if( skin_cfg ) {
this.partner.res_id = skin_cfg.res_id;
return this.partner;
}
//unit_type.role
let look_cfg = game.configs.looks_data.data_data[ partner ];
if( look_cfg ) {
this.partner.lev = look_cfg.lev;
this.partner.star = look_cfg.star;
this.partner.res_id = look_cfg.model;
return this.partner;
}
//unit_type.partner
//只有id
let partner_cfg = game.configs.partner_data.data_partner_base[ partner ];
if( partner_cfg ) {
this.partner.star = partner_cfg.init_star;
let key = partner_cfg.bid + "_" + partner_cfg.init_star;
let cfg = gdata( "partner_data", "data_partner_star", key );
this.partner.camp_type = partner_cfg.camp_type;
this.partner.res_id = cfg.res_id;
return this.partner;
}
let base_cfg = game.configs.partner_data.data_partner_base[ partner.bid ];
if(base_cfg){
this.partner.star = base_cfg.init_star;
let bkey = base_cfg.bid + "_" + base_cfg.init_star;
let cfg = gdata( "partner_data", "data_partner_star", bkey );
this.partner.camp_type = base_cfg.camp_type;
this.partner.res_id = cfg.res_id;
return this.partner;
}
//unit_type.unit
let unit_cfg = Utils.getUnitConfig( partner );
if( unit_cfg ) {
let bid = Number( unit_cfg.body_id );
let partner_cfg = gdata( "partner_data", "data_partner_base", bid );
this.partner.star = partner_cfg.init_star;
let key = partner_cfg.bid + "_" + partner_cfg.init_star;
let cfg = gdata( "partner_data", "data_partner_star", key );
this.partner.camp_type = partner_cfg.camp_type;
this.partner.res_id = cfg.res_id;
return this.partner;
}
//直接返回数据
this.partner = partner;
let key = partner.bid + "_" + partner.star;
let cfg = gdata( "partner_data", "data_partner_star", key );
this.partner.res_id = cfg.res_id;
return this.partner;
},
setData( _partner, is_form, show_detail = true ) {
let self = this;
this.partner = {};
this.checkId( _partner );
if( nx.dt.objEmpty( this.partner ) ) {
return;
}
nx.gui.setActive( this.node, "", true );
if( is_form != null ) {
this.is_in_form = is_form;
}
if( this.is_in_form ) {
if( show_detail ) {
this.setEmpty();
// 等级
if( _partner.lev ) {
nx.gui.setString( this.node, "lev", "Lv." + _partner.lev || 1 );
}
// 星级
if( _partner.star ) {
let path = cc.path.join( "coms/images", "star" + _partner.star );
nx.gui.setSpriteFrame( this.node, "star", path );
}
// 阵营
if( _partner.camp_type ) {
let path = cc.path.join( "prefab/battle/ui/camps" + _partner.camp_type );
nx.gui.setSpriteFrame( this.node, "camp", path );
}
} else {
nx.gui.setActive( this.node, "lev", false );
nx.gui.setActive( this.node, "star", false );
nx.gui.setActive( this.node, "camp", false );
nx.gui.setActive( this.node, "bg", false );
}
// 动画
if( this.partner.res_id ) {
// 迷你
let res_path = PathTool.getSpinePath( this.partner.res_id, this.partner.res_id, false );
self.spMini.load( res_path, ( _e ) => {
if( !self || !self.spMini ) {
return;
}
if( !_e ) {
self.spMini.action( "stand2", true );
} else {
self.spMini.stop(true);
}
} );
}
else {
this.spMini.stop();
nx.error( "立绘配置缺失:", key );
}
} else {
nx.gui.setActive( this.node, "", false );
nx.gui.setActive( this.node, "lev", false );
nx.gui.setActive( this.node, "star", false );
nx.gui.setActive( this.node, "camp", false );
nx.gui.setActive( this.node, "bg", false );
}
},
// update (dt) {},
} );