Files

283 lines
8.3 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, 'cb995A9ShlA74yKU695nta2', 'cmp.wing.scheme');
// Scripts/mod/partner/wings/cmp/cmp.wing.scheme.js
"use strict";
var SVCItem = require("nx.fx.sv.expand.item");
var TipController = require("tips_controller");
var ElfinController = require("elfin_controller");
var ItemBase = require("cmp.item.base");
var 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 rebind(_idx, _data, _key) {
this._super(_idx, _data, _key);
this.freshInfo();
},
// 刷新具体信息
freshInfo: function freshInfo() {
if (!this.mdata) {
this.setEmpty();
nx.bridge.vset("ShowWingPos", null);
return;
}
var maxCount = game.configs.sprite_data.data_elfin_plan_length;
nx.gui.setString(this.sname, "", nx.text.getKey(this.mdata.name));
var sprites = this.mdata.plan_sprites;
sprites.sort(Utils.tableLowerSorter(["pos"]));
var chd = this.sinfo;
var count = 0;
for (var i = 0; i < sprites.length; i++) {
var 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 setEmpty() {
var chd = this.sinfo;
for (var i = 0; i < chd.length; i++) {
var cmp = chd[i].getComponent(ItemBase);
if (cmp) {
cmp.setLocked(true);
this.focus = false;
cmp.setData(0);
}
}
},
onTouchRename: function onTouchRename() {
var TC = TipController.getInstance();
var EC = ElfinController.getInstance();
var id = this.index + 1;
var modify = function modify(_name) {
EC.send26558(id, _name);
};
TC.showInputString({
tip: "",
limit: [1, 12],
cb: function cb(_box, _str) {
_box.close();
modify(_str);
}
});
},
// 聚焦获得
onFocus: function onFocus() {
this.focus = true;
if (this.nodfocus) {
nx.gui.setActive(this.nodfocus, "", true);
nx.gui.setActive(this, "item/tip", false);
}
// this.onTouchPos( 0 );
},
// 聚焦获得
outFocus: function outFocus() {
// this.onTouchPos( -1 );
this.focus = false;
if (this.nodfocus) {
nx.gui.setActive(this.nodfocus, "", false);
nx.gui.setActive(this, "item/tip", true);
}
},
onTouchAdd: function onTouchAdd() {
var _this = this;
var EC = ElfinController.getInstance();
var pfg = game.configs.sprite_data.data_elfin_plan[this.index + 1];
var have = BackpackController.getInstance().getModel().getItemNumByBid(pfg.expend[0][0]);
var need = pfg.expend[0][1];
// 不足弹出提示
if (have < need) {
nx.tbox(nx.text.getKey("elfin_hatch_unlock_5"));
return;
}
var mat0 = pfg.expend[0][0];
var txt = nx.text.format("lab_heaven_msg_tips_19n", need, this.index + 1);
EC.openElfUseTipsWindow(true, txt, [mat0], [need], function (_deal) {
EC.send26562(_this.index + 1);
EC.openElfUseTipsWindow(false);
});
},
onTouchPos: function onTouchPos(_index) {
return;
var nodParent = this.node.parent.parent;
// console.log( "节点" + nodParent.name );
for (var i = 0; i < nodParent.children.length; i++) {
var item = nodParent.children[i];
// console.log( "节点s" + Object.keys( item.svItem ) );
if (item.svItem) {
var chd = item.svItem.sinfo;
// let smp = item.getComponent( SVCItem );
if (chd) {
for (var j = 0; j < chd.length; j++) {
// console.log("取消选择状态");
var sch = chd[j];
var cmp = sch.getComponent(ItemBase);
if (cmp) {
cmp.outFocus();
}
}
}
}
}
// console.log( "当前的方案" + this.index + "当前点击" + _index + "状态" + this.focus );
for (var _i = 0; _i < this.sinfo.length; _i++) {
var selectNode = this.sinfo[_i];
var _cmp = selectNode.getComponent(ItemBase);
if (_cmp) {
if (_index == _i) {
_cmp.onFocus();
// console.log( "当前的方案" );
if (!nx.dt.objGood(_cmp.mdata)) {
var 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 onTouchSave(_type, _team) {
var EC = ElfinController.getInstance();
var choice = [];
for (var i = 0; i < this.sinfo.length; i++) {
var selectNode = this.sinfo[i];
var cmp = selectNode.getComponent(ItemBase);
if (cmp) {
if (!nx.dt.objGood(cmp.mdata)) {
var data = {};
data.pos = i + 1;
data.item_bid = nx.dt.objClone(cmp.mdata || -1);
choice.push(data);
} else {
var _data2 = {};
_data2.pos = i + 1;
_data2.item_bid = 0;
// console.log( "当前的pos2" + JSON.stringify( data ) );
choice.push(_data2);
}
}
}
for (var _i2 = 0; _i2 < choice.length; _i2++) {
if (choice[_i2].item_bid < 0) {
choice.splice(_i2, 1); // 将使后面的元素依次前移,数组长度减1
_i2--; // 如果不减,将漏掉一个元素
}
}
var id = this.index + 1;
EC.send26557(id, choice, _type, _team);
},
//使用预设方案
UsePreSet: function UsePreSet() {
// 获取当前的默认方案配置
var ElfinCtl = ElfinController.getInstance();
var model = ElfinCtl.getModel();
var defaultSchemeInfo = model.getDedefaultElfinInfo();
var schemes = model.getAllPlanData();
var schemesid = [];
// let num = 0;
for (var i = 0; i < defaultSchemeInfo.length; i++) {
var 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]);
}
var data = {
lst: schemesid,
index: this.index
};
nx.bridge.vset("ShowWingPos", data);
},
onTouchSaveBtn: function onTouchSaveBtn() {
var EC = ElfinController.getInstance();
var choice = [];
for (var i = 0; i < this.sinfo.length; i++) {
var selectNode = this.sinfo[i];
var cmp = selectNode.getComponent(ItemBase);
if (cmp) {
if (!nx.dt.objGood(cmp.mdata)) {
var data = {};
data.pos = i + 1;
data.item_bid = nx.dt.objClone(cmp.mdata || -1);
choice.push(data);
} else {
var _data3 = {};
_data3.pos = i + 1;
_data3.item_bid = 0;
// console.log( "当前的pos2" + JSON.stringify( data ) );
choice.push(_data3);
}
}
}
for (var _i3 = 0; _i3 < choice.length; _i3++) {
if (choice[_i3].item_bid < 0) {
choice.splice(_i3, 1); // 将使后面的元素依次前移,数组长度减1
_i3--; // 如果不减,将漏掉一个元素
}
}
EC.sender26514(choice);
}
});
cc._RF.pop();