Files
2026-05-23 22:10:14 +08:00

240 lines
7.9 KiB
JavaScript

/******************************************************************
*
* 伙伴进阶界面
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const HeroEvent = require( "hero_event" );
const HeroController = require( "hero_controller" );
const BackpackController = require( "backpack_controller" );
const RoleController = require( "role_controller" );
const FID = require( "bridge.function.ids" );
const TipsController = require( "tips_controller" );
cc.Class( {
extends: BridgeWindow,
properties: {
lstProps: { default: null, type: cc.Node },
nodSkill: { default: null, type: cc.Node },
lstNeeds: { default: null, type: cc.Node },
},
onLoad: function() {
// 事件监听
this.bindGEvent( HeroEvent.Next_Break_Info_Event, this.onRecvGradeMsg.bind( this ) );
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
this.partner = _params;
// 无效
if( nx.dt.objEmpty( this.partner ) ) {
this.scheduleOnce( () => {
this.close();
}, 0.03 );
return;
}
// 请求
HeroController.getInstance().sender11016( this.partner.partner_id );
},
// 进阶消息
onRecvGradeMsg: function( _data ) {
this.fresh( _data );
},
// 刷新
fresh: function( _data ) {
// 进阶配置
let k1 = this.partner.type + "_" + this.partner.break_id + "_" + this.partner.break_lev;
let k2 = this.partner.type + "_" + this.partner.break_id + "_" + ( this.partner.break_lev + 1 );
let cbc = game.configs.partner_data.data_partner_brach[ k1 ];
let nbc = game.configs.partner_data.data_partner_brach[ k2 ];
if( nx.dt.objEmpty( cbc ) || nx.dt.objEmpty( nbc ) ) {
this.scheduleOnce( () => {
this.close();
}, 0.03 );
return;
}
// 属性
// 首位为等级
let chds = this.lstProps.children;
let first = chds[ 0 ];
if( first ) {
nx.gui.setSpriteFrame( first, "icon", null );
nx.gui.setString( first, "name", nx.text.getKey( "Level" ) );
nx.gui.setString( first, "from", cbc.lev_max );
nx.gui.setString( first, "to", nbc.lev_max );
}
// 其他属性
for( let i = 1; i < chds.length; ++i ) {
let node = chds[ i ];
let att = nbc.all_attr[ i - 1 ];
if( !att ) {
node.active = false;
continue;
}
node.active = true;
let id = att[ 0 ];
let icon = cc.path.join( "coms/images", "ico_" + id );
nx.gui.setSpriteFrame( node, "icon", icon );
let name = game.configs.attr_data.data_key_to_name[ id ];
nx.gui.setString( node, "name", nx.text.getKey( name ) );
if( id == "hp_max" ) {
id = "hp";
}
nx.gui.setString( node, "from", this.partner[ id ] );
nx.gui.setString( node, "to", _data[ id ] || 0 );
}
// 新技能
let locked = true;
this.skill = null;
if( nbc.skill_num > cbc.skill_num ) {
let key = this.partner.bid + "_" + this.partner.star;
let scfg = gdata( "partner_data", "data_partner_star", key );
if( scfg ) {
let sid = null;
for( let i in scfg.skills ) {
if( scfg.skills[ i ][ 0 ] == nbc.skill_num ) {
sid = scfg.skills[ i ][ 1 ];
}
}
if( sid ) {
let cfgs = gskilldata( 'data_get_skill', sid );
if( cfgs ) {
nx.gui.setString( this.nodSkill, "title/name", nx.text.getKey( "UnlockSkill" ) );
nx.gui.setActive( this.nodSkill, "icon", true );
let icon = nx.gui.getComponent( this.nodSkill, "icon", "cmp.skill.base" );
if( icon ) {
icon.setData( cfgs );
}
this.skill = cfgs;
locked = false;
}
}
}
}
// 无新技能解锁
if( locked ) {
nx.gui.setString( this.nodSkill, "title/name", nx.text.getKey( "NoNewSkill" ) );
nx.gui.setActive( this.nodSkill, "icon", false );
nx.gui.setString( this.nodSkill, "name", "" );
}
// 消耗
this.needs = [];
if( nx.dt.arrEmpty( cbc.expend ) ) {
// 无消耗
nx.gui.hideAllChildren( this.lstNeeds );
}
else {
let model = BackpackController.getInstance().getModel();
let chds = this.lstNeeds.children;
for( let i = 0; i < chds.length; ++i ) {
let node = chds[ i ];
let info = cbc.expend[ i ];
if( !info ) {
node.active = false;
continue;
}
node.active = true;
let cfg = Utils.getItemConfig( info[ 0 ] );
nx.bridge.setIcon( node, "icon", cfg.icon );
let have = model.getItemNumByBid( info[ 0 ] );
let str = cc.js.formatStr( "%s/%s", nx.dt.shortCount( have ), Utils.getMoneyString( info[ 1 ] ) );
nx.gui.setString( node, "txt", str );
let clr = ( have >= info[ 1 ] ) ? cc.Color.WHITE : cc.Color.RED;
nx.gui.setColor( node, "txt", clr );
// 缺少记录
if( have < info[ 1 ] ) {
this.needs.push( info[ 0 ] );
}
}
}
},
// 点击确认
onTouchConfirm: function() {
if( nx.dt.objEmpty( this.partner ) ) {
return;
}
let self = this;
let lev = RoleController.getInstance().getRoleVo().lev;
let TC = TipsController.getInstance();
let cfg = game.configs.source_data.data_source_data;
// 缺材料
if( nx.dt.arrNEmpty( this.needs ) ) {
var expend_item_cfg = gdata( "item_data", "data_unit1", this.needs[ 0 ], false );
// nx.tbox( cc.js.formatStr( nx.text.getKey( "lab_hero_break_window_tip1" ), expend_item_cfg.name ) );//Utils.TI18N("物品[" + expend_item_cfg.name + "]不足"));
// BackpackController.getInstance().openTipsSource( true, this.needs[ 0 ] );
if( nx.bridge.acts ){
let data = nx.bridge.acts.queryThemeByType( 13 );
if( expend_item_cfg.id != 1 ){
if( data && lev >= cfg[data.source].lev_limit[1] ){
nx.mbox( nx.text.format( "BuyReward", expend_item_cfg.name ), [ 'cancel', 'Buy' ], ( _key, _box ) => {
_box.close();
if( _key == "Buy" ) {
nx.bridge.jumper.jump2Window( FID.ActMySteryGift, expend_item_cfg.id );
}
} );
}else{
if ( TC ) {
TC.showItemTips( expend_item_cfg.id );
}
}
}else{
if ( TC ) {
TC.showItemTips( expend_item_cfg.id );
}
}
}else{
if ( TC ) {
TC.showItemTips( expend_item_cfg.id );
}
}
this.close();
return;
}
// 进阶
HeroController.getInstance().sender11004( this.partner.id );
this.close();
},
} );