Files
fc/dev/project/assets/Scripts/mod/home/base_kernel/cmp.kernel.upgrade.js
T
2026-05-23 22:10:14 +08:00

236 lines
8.5 KiB
JavaScript

/******************************************************************
*
* 家園 基礎核心 升階相關
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const BackPackController = require( "backpack_controller" );
const HeroControl = require( "hero_controller" );
cc.Class( {
extends: BridgeWindow,
properties: {
nodSks: { default: null, type: cc.Node },
nodNeeds: { default: null, type: cc.Node },
},
// 重载:参数打开 僚机的id
onOpenConfigs: function( _params ) {
this.item_id = _params.item_bid;
this.sid = _params.skill_id;
this.pos = _params.pos;
// this.cb = _params.cb;
this.from = _params.from;
this.camp = _params.camp;
this.cb = _params.cb;
this.fresh( );
},
// 刷新
fresh: function( ) {
let self = this;
let BC = BackPackController.getInstance();
let BM = BC.getModel();
let setInfo = function( _node, _ffg, _sfg ){
let icon = nx.gui.find(_node, "icon/icon");
let nodLev = nx.gui.find(_node, "icon/level");
let nodLevName = nx.gui.find(_node, "name");
let nodDesc = nx.gui.find(_node, "desc/srv/view/content");
let path = _ffg.skill_icon ? cc.path.join( "resDB/icons/skills/" + _sfg.res_id ) : "";
nx.gui.setSpriteFrame( icon, "", path );
nx.gui.setString( nodLev, "txt", _sfg.lev || 0 );
nx.gui.setString( nodLevName, "txt", _sfg.name || nx.text.getKey( "lab_role_title_panel_tip_3" ) );
nx.gui.setString( nodDesc, "txt", _sfg.desc || "" );
}
// 通过传入的配置表来进行显隐ui
let dealShow = function( _cfg, _award ){
if( nx.dt.objEmpty( _cfg ) ) {
// 技能升到满级
if( !_cfg|| !_award || !nx.dt.numPositive( _award, false ) ){
// 技能信息
// let cur = nx.gui.getComponent( self.nodSks, "from/icon", "cmp.skill.base" );
// console.log( "需要設置的技能id" + self.sid );
// cur.setData( self.sid );
let nod = nx.gui.find( self.nodSks, "from" );
setInfo( nod, cfgs, scfgs );
}
nx.gui.setActive( self.nodSks, "from/name/max", true );
}
nx.gui.setActive( self.nodSks, "arrow", !nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self.nodSks, "to", !nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self, "panel/panel/needtip", !nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self.nodNeeds, "", !nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self, "panel/panel/leveltip", nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self, "panel/panel/max", nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self, "panel/up", !nx.dt.objEmpty( _cfg ) );
nx.gui.setActive( self, "panel/close", nx.dt.objEmpty( _cfg ) );
}
// 配置获取 僚机技能升级
let cfgs = nx.dt.objClone( game.configs.halidom_data.data_step[this.camp][this.item_id] );
let scfgs = nx.dt.objClone( game.configs.halidom_data.data_skill[cfgs.skill_icon] );
if( this.from == "kernel" ){
// 技能显示相关
let next = game.configs.halidom_data.data_step[this.camp][this.item_id + 1] ;
let award = 0;
if( cfgs && next ){
award = next.skill_icon;
//当前阶的技能配置
let nscfgs = nx.dt.objClone( game.configs.halidom_data.data_skill[next.skill_icon] );
// 技能信息
let snode = nx.gui.find( this.nodSks, "from" );
let tnode = nx.gui.find( this.nodSks, "to" );
nx.gui.setActive( snode, "name/max", false );
setInfo( snode, cfgs, scfgs || {} );
setInfo( tnode, next, nscfgs );
let temp = nx.gui.find( self.nodNeeds, "list" );
nx.gui.hideAllChildren( temp );
if( next.loss_rand[0].length > 2 ){
this.matneeds = {
mat : [],
count : next.loss_rand[0][2],
}
let nodAdd = temp.children[2];
nx.gui.setActive( nodAdd, "", true );
nx.gui.setString( nodAdd, "txt", nx.text.format( "matNeed", next.loss_rand[0][1], nx.text.getKey( "AnyNameCamp" + next.loss_rand[0][0] ) ) );
let cmp = nx.gui.getComponent( nodAdd, "", "cmp.item.base" );
if( cmp ) {
cmp.setData( 0 );
}
}
if( next.loss_items[0] ){
let nod = temp.children[0];
nx.gui.setActive( nod ,"", true );
nx.gui.setActive( nod, "", true );
let cmp = nx.gui.getComponent( nod, "", "cmp.item.base" );
if( cmp ) {
cmp.setData( next.loss_items[0][0] );
}
let hcnt = BM.getItemNumByBid( next.loss_items[0][0] );
nx.gui.setString( cmp, "count", nx.dt.shortCount( hcnt ) + "/" + nx.dt.shortCount( next.loss_items[0][1] ) );
let eno = ( hcnt >= next.loss_items[0][1] );
nx.gui.setColor( cmp, "count", eno ? cc.Color.WHITE : cc.Color.RED );
if( !eno ) {
self.enough = false;
}
}
dealShow( cfgs, award );
}else{
dealShow( {} );
}
}
},
// 点击确认
onTouchConfirm: function() {
if( this.from == "kernel" ){
/***
* [22204]:{"id":1,"list1":[],"list2":[{"id":11},{"id":111},{"id":112}]}
*/
let lst = [];
this.matneeds.mat.forEach( _mat=>{
if( _mat ){
lst.push( {"id":_mat.id} );
}
} )
let data = {
id : this.camp,
list1: [],
list2: lst,
}
nx.dt.fnInvoke( this.cb , data );
}
this.close();
},
onTouchAdd: function(){
let next = game.configs.halidom_data.data_step[this.camp][this.item_id + 1];
// 需要的星级限制
let needStar = next.loss_rand[0][1];
let needCount = next.loss_rand[0][2];
this.needCountShow = next.loss_rand[0][2];
let partners = HeroControl.getInstance().getModel().getDeepHeroListByCamp( this.camp );
let canUseLst = [];
let HC = HeroControl.getInstance();
partners.forEach( _partner => {
if( _partner.is_in_form == 0 && _partner.camp_type == this.camp && _partner.star == needStar ){
canUseLst.push( _partner );
}
} )
let nowSelect = [];
let temp = nx.gui.find( this.nodNeeds, "list" );
let cmp = nx.gui.find( temp, "add" ).getComponent( "cmp.item.base" );
nowSelect = this.matneeds.mat || [];
this.CanUsePartners = nx.dt.objClone( canUseLst );
let args = {
partners: canUseLst,
count : needCount,
selects : nowSelect,
}
HC.openPartnerSelector( true, args, ( _selects => {
// if( cmp ){
// cmp.setData( _selects[0] )
// }
this.freshMatInfo( cmp,_selects || [] );
HC.openPartnerSelector( false );
} ) );
},
freshMatInfo: function( _cmp,_selectsD ){
let BC = BackPackController.getInstance();
let BM = BC.getModel();
_cmp.setData( _selectsD[0] );
this.matneeds.mat = _selectsD;
let hcnt = this.CanUsePartners.length;
nx.gui.setString( _cmp, "count", nx.dt.shortCount( _selectsD.length ) + "/" + nx.dt.shortCount( this.needCountShow ) );
let eno = ( hcnt >= _selectsD.length );
nx.gui.setColor( _cmp, "count", eno ? cc.Color.WHITE : cc.Color.RED );
if( !eno ) {
this.enough = false;
}
}
} );