240 lines
7.9 KiB
JavaScript
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();
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
} );
|