283 lines
8.3 KiB
JavaScript
283 lines
8.3 KiB
JavaScript
|
|
"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();
|