Files
2026-05-23 22:10:14 +08:00

334 lines
9.8 KiB
JavaScript

const SVCItem = require("nx.fx.sv.expand.item");
const TipController = require( "tips_controller" );
const ElfinController = require( "elfin_controller" );
const ItemBase = require( "cmp.item.base" );
const BackpackController = require( "backpack_controller" );
/**********
*
* 僚机方案 单项
*/
cc.Class({
extends: SVCItem,
properties: {
sname : {
default: null,
type : cc.Node,
displayName : "方案名",
},
sinfo : {
default: [],
type : cc.Node,
displayName : "僚机装配方案组",
},
nodfocus : {
default: null,
type : cc.Node,
displayName : "聚焦",
},
},
// 数据重置
rebind: function (_idx, _data, _key) {
this._super(_idx, _data, _key);
this.freshInfo();
},
// 刷新具体信息
freshInfo:function(){
if(!this.mdata){
this.setEmpty();
nx.bridge.vset( "ShowWingPos", null );
return;
}
let maxCount = game.configs.sprite_data.data_elfin_plan_length;
nx.gui.setString( this.sname, "", nx.text.getKey( this.mdata.name ) );
let sprites = this.mdata.plan_sprites;
sprites.sort( Utils.tableLowerSorter( [ "pos" ] ) );
let chd = this.sinfo;
let count = 0;
for (let i = 0; i < sprites.length; i++) {
let cmp = chd[i].getComponent( ItemBase );
if( cmp ){
cmp.setLocked( false );
cmp.setData( sprites[i].item_bid );
if( sprites[i].item_bid != 0 ){
count++;
}
}
}
nx.gui.setActive( this, "ico_do", count != 0 );
nx.gui.setActive( this, "ico", count == 0 );
nx.gui.setActive( this, "item", this.mdata.id <= maxCount );
nx.gui.setActive( this, "add", this.mdata.id > maxCount );
//{"id":9,"name":"新增","plan_sprites":[{"pos":5,"item_bid":0}]}
/***{"id":1,"name":"464646",
* "plan_sprites":[{"pos":1,"item_bid":113408},{"pos":2,"item_bid":113407},{"pos":3,"item_bid":0},{"pos":4,"item_bid":0}]} */
},
setEmpty: function(){
let chd = this.sinfo;
for (let i = 0; i < chd.length; i++) {
let cmp = chd[i].getComponent( ItemBase );
if( cmp ){
cmp.setLocked( true );
this.focus = false;
cmp.setData( 0 );
}
}
},
onTouchRename : function(){
let TC = TipController.getInstance();
let EC = ElfinController.getInstance();
let id = this.index + 1;
let modify = function( _name ) {
EC.send26558( id, _name );
};
TC.showInputString( { tip: "", limit: [1,12], cb: ( _box, _str ) => {
_box.close();
modify( _str );
} });
},
// 聚焦获得
onFocus: function(){
this.focus = true;
if( this.nodfocus ){
nx.gui.setActive( this.nodfocus, "" , true );
nx.gui.setActive( this, "item/tip", false );
}
// this.onTouchPos( 0 );
},
// 聚焦获得
outFocus: function(){
// this.onTouchPos( -1 );
this.focus = false;
if( this.nodfocus ){
nx.gui.setActive( this.nodfocus, "" , false );
nx.gui.setActive( this, "item/tip", true );
}
},
onTouchAdd : function(){
let EC = ElfinController.getInstance();
let pfg = game.configs.sprite_data.data_elfin_plan[this.index + 1];
let have = BackpackController.getInstance().getModel().getItemNumByBid( pfg.expend[0][0] );
let need = pfg.expend[0][1];
// 不足弹出提示
if( have < need ){
nx.tbox( nx.text.getKey( "elfin_hatch_unlock_5" ) );
return;
}
let mat0 = pfg.expend[0][0];
let txt = nx.text.format( "lab_heaven_msg_tips_19n", need, this.index + 1 );
EC.openElfUseTipsWindow( true , txt, [mat0], [ need ], ( _deal =>{
EC.send26562( this.index + 1 );
EC.openElfUseTipsWindow( false );
} ) );
},
onTouchPos: function( _index ){
return;
let nodParent = this.node.parent.parent;
// console.log( "节点" + nodParent.name );
for (let i = 0; i < nodParent.children.length; i++) {
let item = nodParent.children[i];
// console.log( "节点s" + Object.keys( item.svItem ) );
if( item.svItem ){
let chd = item.svItem.sinfo;
// let smp = item.getComponent( SVCItem );
if( chd ){
for (let j = 0; j < chd.length; j++) {
// console.log("取消选择状态");
let sch = chd[j];
let cmp = sch.getComponent( ItemBase );
if( cmp ){
cmp.outFocus();
}
}
}
}
}
// console.log( "当前的方案" + this.index + "当前点击" + _index + "状态" + this.focus );
for (let i = 0; i < this.sinfo.length; i++) {
let selectNode = this.sinfo[i];
let cmp = selectNode.getComponent( ItemBase );
if( cmp ){
if( _index == i ){
cmp.onFocus();
// console.log( "当前的方案" );
if( !nx.dt.objGood( cmp.mdata ) ){
let data = {};
data.index = this.select_wing;
data.mdata = nx.dt.objClone( cmp.mdata );
nx.bridge.vset( "ShowWingPos", data );
break;
}
nx.bridge.vset( "ShowWingPos", i );
}else{
cmp.outFocus();
}
}
}
},
onTouchSave: function( _type,_team ){
let EC = ElfinController.getInstance();
let choice = [];
for (let i = 0; i < this.sinfo.length; i++) {
let selectNode = this.sinfo[i];
let cmp = selectNode.getComponent( ItemBase );
if( cmp ){
if( !nx.dt.objGood( cmp.mdata ) ){
let data = {};
data.pos = i + 1;
data.item_bid = nx.dt.objClone( cmp.mdata || -1 );
choice.push( data );
}else{
let data = {};
data.pos = i + 1;
data.item_bid = 0;
// console.log( "当前的pos2" + JSON.stringify( data ) );
choice.push( data );
}
}
}
for (let i = 0; i < choice.length; i++) {
if ( choice[i].item_bid < 0 ) {
choice.splice(i, 1); // 将使后面的元素依次前移,数组长度减1
i--; // 如果不减,将漏掉一个元素
}
}
let id = this.index + 1;
EC.send26557( id, choice, _type, _team );
},
//使用预设方案
UsePreSet: function(){
// 获取当前的默认方案配置
let ElfinCtl = ElfinController.getInstance();
let model = ElfinCtl.getModel();
let defaultSchemeInfo = model.getDedefaultElfinInfo();
let schemes = model.getAllPlanData() ;
let schemesid = [];
// let num = 0;
for (let i = 0; i < defaultSchemeInfo.length; i++) {
let item = defaultSchemeInfo[i];
if( item.item_bid >= 0 ){
schemesid.push( item.item_bid );
}
// if( item.item_bid == 0 ){
// num++;
// }
}
// if( num >= 4 ){
// nx.tbox( nx.text.getKey( "tips_assemble_none" ) );
// return;
// }
// console.log( JSON.stringify( schemes ) + "当前的默认方案配置" + JSON.stringify( defaultSchemeInfo ) );
if( schemes[this.index] ){
schemes[this.index].plan_sprites = defaultSchemeInfo;
this.rebind( this.index, schemes[this.index] );
}
let data = {
lst : schemesid,
index : this.index,
}
nx.bridge.vset( "ShowWingPos", data );
},
onTouchSaveBtn: function(){
let EC = ElfinController.getInstance();
let choice = [];
for (let i = 0; i < this.sinfo.length; i++) {
let selectNode = this.sinfo[i];
let cmp = selectNode.getComponent( ItemBase );
if( cmp ){
if( !nx.dt.objGood( cmp.mdata ) ){
let data = {};
data.pos = i + 1;
data.item_bid = nx.dt.objClone( cmp.mdata || -1 );
choice.push( data );
}else{
let data = {};
data.pos = i + 1;
data.item_bid = 0;
// console.log( "当前的pos2" + JSON.stringify( data ) );
choice.push( data );
}
}
}
for (let i = 0; i < choice.length; i++) {
if ( choice[i].item_bid < 0 ) {
choice.splice(i, 1); // 将使后面的元素依次前移,数组长度减1
i--; // 如果不减,将漏掉一个元素
}
}
EC.sender26514( choice );
},
});