/****************************************************************** * * 家園 基礎核心 升階相關 * ******************************************************************/ 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; } } } );