Files
fc/dev/project/assets/Scripts/mod/guild/talent/base/cmp.guild.talent.skill.uplev.js
T
2026-05-23 22:10:14 +08:00

141 lines
4.0 KiB
JavaScript

/******************************************************************
*
* 聯盟天賦pvp技能升级
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const BackpackController = require( "backpack_controller" );
const SkillBase = require( "cmp.skill.base" );
const GuildskillController = require( "guildskill_controller" );
cc.Class( {
extends: BridgeWindow,
properties: {
skillNow: { default: null, type: SkillBase },
skillNext: { default: null, type: SkillBase },
lstNeeds: { default: null, type: cc.Node },
},
onLoad: function() {
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
/*****
* {"career":2,
* "lev":{"career":2,
* "attr_formation":[{"id":20001,"lev":7},
* {"id":20002,"lev":1},
* {"id":20003,"lev":5},
* {"id":20004,"lev":4}],
* "skill_id":0,"skill_lev":0}}
*/
this.career = _params.career;
this.info = _params.lev;
this.skill = _params.lev.skill_id;
this.fresh();
},
// 刷新
fresh: function( ) {
let key = this.career + "_" + ( parseInt( this.info.skill_lev ) + 1 ) ;
let cfg = gdata( "guild_skill_data", "data_pvp_skill_info", key );
this.needs = [];
if( cfg ){
this.skillNext.setData( cfg.skill_id );
this.skillNow.setData( this.skill );
nx.gui.setActive( this.skillNow, "lock", this.info.skill_lev == 0 );
}
let key2 = this.career + "_" + this.info.skill_lev;
let mfg = gdata( "guild_skill_data", "data_pvp_skill_info", key2 );
if( nx.dt.arrEmpty( mfg.loss ) ) {
// 无消耗
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 = mfg.loss[ i ];
if( !info ) {
node.active = false;
continue;
}
node.active = true;
let icfg = Utils.getItemConfig( info[ 0 ] );
nx.bridge.setIcon( node, "icon", icfg.icon );
let have = model.getItemNumByBid( info[ 0 ] );
let str = nx.dt.shortCount( info[ 1 ] ) + "/" + nx.dt.shortCount( have );
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.arrEmpty( this.needs ) ){
let mat = this.needs[0];
let ifg = gdata( "item_data", "data_unit1", mat );
if( ifg ){
nx.tbox( nx.text.format( nx.text.getKey( "lab_hero_break_window_tip1" ), ifg.name ) );
}
BackpackController.getInstance().openTipsSource( true, mat );
this.close();
return;
}
let key2 = this.career + "_" + this.info.skill_lev;
let mfg = gdata( "guild_skill_data", "data_pvp_skill_info", key2 );
let need_lev = mfg.need_lev;
let all = this.info.attr_formation;
let count = 0;
all.forEach( item => {
if( item.lev >= need_lev ){
count++;
}
});
if( count != all.length ){
//
nx.tbox( nx.text.format( "GuildSkillUpLevNeeds", need_lev ) );
return;
}
let GS = GuildskillController.getInstance();
if( GS ){
GS.send23708( this.career );
}
this.close();
},
} );