Files
fc/dev/project/assets/Scripts/mod/partner/wings/cmp/cmp.wing.scientfic.item.wnd.js
T
2026-05-23 22:10:14 +08:00

210 lines
6.1 KiB
JavaScript

/******************************************************************
*
* 选择 僚机Egg 操作
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const ElfinController = require( "elfin_controller" );
const BackpackController = require( "backpack_controller" );
const ItemBase = require( "cmp.item.base" );
const ElfinEvent = require( "elfin_event" );
const TipsController = require( "tips_controller" );
cc.Class( {
extends: BridgeWindow,
properties: {
nodWingEgg : {
default : null,
type : cc.Node,
},
nodTimeDesc : {
default : null,
type : cc.Node,
},
nodResultDesc : {
default : null,
type : cc.Node,
},
nodBuy : {
default : null,
type : cc.Node,
},
},
onLoad:function(){
this.bindGEvent( ElfinEvent.Buy_Elfin_Item_Success_Event, this.freshScientficInfo.bind( this) );
this.freshScientficInfo();
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
// console.log( "孵化数据" + JSON.stringify( _params ) );
this.pos = _params.hatch_id;
},
freshScientficInfo : function(){
// 默认的显示 读取的是sprite_data表里的数据
let cfg = game.configs.sprite_data.data_hatch_egg;
let chd = this.nodWingEgg.children;
this.cfgs = [];
nx.gui.setActive( this.nodResultDesc, "", false );
nx.gui.setActive( this.nodTimeDesc, "", false );
for (let i in cfg ) {
let item = cfg[i];
// this.nodWingEgg[i].outFocus();
this.cfgs.push( item );
// this.nodWingEgg[i].setData( item.item_bid );
}
this.cfgs.sort( Utils.tableLowerSorter( [ "item_bid" ] ) )
// let item
for (let i = 0; i < this.cfgs.length; i++) {
let item = this.cfgs[i];
let cmp = chd[i].getComponent( ItemBase );
if( cmp ){
cmp.outFocus();
cmp.setData( item.item_bid );
}
}
},
onTouchItem : function( _index ){
let chd = this.nodWingEgg.children;
for (let i = 0; i < chd.length; i++) {
let item = chd[i];
let cmp = item.getComponent( ItemBase );
if( cmp ){
if( _index == i ){
cmp.onFocus();
this.freshDesc( cmp.mdata );
}else{
cmp.outFocus();
}
}
}
},
freshDesc : function( _item_bid ){
let cfg = game.configs.sprite_data.data_hatch_egg[_item_bid];
let rate = game.configs.sprite_data.data_const.hatch_rate.val;
if( nx.dt.objNEmpty( cfg ) ){
let time = cfg.need_piont * rate;
let h = Math.floor( time / 3600 );
let m = time % 60 ;
nx.gui.setString( this.nodTimeDesc, "txt" , nx.text.format( "NeedTime", h , m ) );
nx.gui.setString( this.nodResultDesc, "txt" , cfg.desc );
nx.gui.setActive( this.nodResultDesc, "", true );
nx.gui.setActive( this.nodTimeDesc, "", true );
}
nx.gui.setActive( this.nodBuy, "", cfg.can_buy > 0 );
this.item_id = _item_bid;
},
onTouchSure: function(){
let EC = ElfinController.getInstance();
if( !this.item_id ){
nx.tbox( nx.text.getKey( "SelectOneWing" ) );
return;
}
if( EC ){
EC.sender26503( this.pos, this.item_id );
this.close();
}
},
// 合成
onTouchMerge: function(){
let BC = BackpackController.getInstance();
if( BC ){
// 10601
let cfg = gdata( "item_data","data_unit1" , this.item_id );
let mat = game.configs.sprite_data.data_const.liaoji_materials.val[0];
let needCount = game.configs.sprite_data.data_const.liaoji_materials.val[1];
let all = BC.getModel().getBagItemList( 1 );// 获取对应背包类型的物品列表
this.data = {};
for (let i in all ) {
let item = all[i];
if( item.base_id == mat ){
this.data = item;
}
}
// console.log(mat + "物品数据当前显示" + JSON.stringify( this.data ) );
let count = BackpackController.getInstance().getModel().getItemNumByBid( mat );
if( count < needCount ){
let TC = TipsController.getInstance();
if( TC ) {
nx.tbox( "tip_noEnoughMaterial" );
// TC.showItemTips( mat );
}
return;
}
// console.log(this.item_id + "物品数据" + JSON.stringify( all ) );
ElfinController.getInstance().openElfinEggSyntheticPanel( true, mat );
// this.scheduleOnce( ()=> {
// ElfinController.getInstance().openElfSelectItemWindow( false );
// }, 0.1 );
// BC.openItemMergePanel( true, this.data, BBC.BACKPACK );
}
},
// 购买
onTouchBuy: function(){
if( !this.item_id ){
nx.tbox( nx.text.getKey( "SelectOneWing" ) );
return;
}
let EC = ElfinController.getInstance();
if( EC ){
let type = 1;
EC.openBuyPanel( true, this.item_id, type, _data => {
let EC = ElfinController.getInstance();
EC.sender26507( _data.type, _data.item_id, _data.num );
EC.openBuyPanel( false );
} );
// this.scheduleOnce( ()=> {
// ElfinController.getInstance().openElfSelectItemWindow( false );
// }, 0.1 );
}
}
} );