/****************************************************************** * * 伙伴进阶界面 * ******************************************************************/ 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(); }, } );