401 lines
12 KiB
JavaScript
401 lines
12 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, '73f4fMpjBZGu5y16J/ynu06', 'cmp.partner.holy.sch');
|
||
|
|
// Scripts/mod/partner/cmps/artifact/cmp.partner.holy.sch.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");
|
||
|
|
var HeroController = require("hero_controller");
|
||
|
|
var HeroConst = require("hero_const");
|
||
|
|
var BackPackConst = require("backpack_const");
|
||
|
|
var HEHY = HeroConst.HolyequipmentPosList;
|
||
|
|
|
||
|
|
/**********
|
||
|
|
*
|
||
|
|
* 僚机方案 单项
|
||
|
|
*/
|
||
|
|
|
||
|
|
cc.Class({
|
||
|
|
"extends": SVCItem,
|
||
|
|
properties: {
|
||
|
|
sname: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "方案名"
|
||
|
|
},
|
||
|
|
nodfocus: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "聚焦"
|
||
|
|
},
|
||
|
|
nodUser: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "使用者"
|
||
|
|
},
|
||
|
|
nodAddnew: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "新增"
|
||
|
|
},
|
||
|
|
nodItem: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "方案"
|
||
|
|
},
|
||
|
|
nodId: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node,
|
||
|
|
displayName: "编号"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// 数据重置
|
||
|
|
rebind: function rebind(_idx, _data, _key) {
|
||
|
|
this._super(_idx, _data, _key);
|
||
|
|
this.freshInfo();
|
||
|
|
},
|
||
|
|
// 刷新具体信息
|
||
|
|
freshInfo: function freshInfo() {
|
||
|
|
var HC = HeroController.getInstance();
|
||
|
|
if (this.mdata) {
|
||
|
|
// console.log( "当前的方案数据信息"+ this.mdata.id + JSON.stringify( this.mdata ) );
|
||
|
|
// {"id":1,"name":"Scheme1","is_open":1,"open_cost":[]}
|
||
|
|
if (this.nodId) {
|
||
|
|
nx.gui.setString(this.nodId, "", this.mdata.id);
|
||
|
|
}
|
||
|
|
nx.gui.setString(this.sname, "", this.mdata.name);
|
||
|
|
if (this.nodUser) {
|
||
|
|
nx.gui.setString(this.nodUser, "", "");
|
||
|
|
}
|
||
|
|
if (!nx.dt.arrEmpty(this.mdata.open_cost)) {
|
||
|
|
if (this.nodAddnew) {
|
||
|
|
var anode = nx.gui.find(this.nodAddnew, "add/icon");
|
||
|
|
var nnode = nx.gui.find(this.nodAddnew, "add/cost/num");
|
||
|
|
nx.bridge.setIconS(anode, "", this.mdata.open_cost[0][0]);
|
||
|
|
nx.gui.setString(nnode, "", this.mdata.open_cost[0][1]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var slots = nx.gui.find(this.nodItem, "slots");
|
||
|
|
var descs = nx.gui.find(this.nodItem, "desc");
|
||
|
|
// 如果当前的list配置数据不为空
|
||
|
|
if (!nx.dt.arrEmpty(this.mdata.list)) {
|
||
|
|
var allEqm = {};
|
||
|
|
allEqm = this.getAllHolyLst(this.mdata.list);
|
||
|
|
|
||
|
|
// 套装说明
|
||
|
|
|
||
|
|
// let nod_desc = nx.gui.find( descs, "desc" );
|
||
|
|
var lst = HC.getModel().getHolyEquipSuitDes(allEqm);
|
||
|
|
nx.gui.setActive(descs, "", !nx.dt.arrEmpty(lst));
|
||
|
|
if (!nx.dt.arrEmpty(lst) && descs) {
|
||
|
|
for (var i = 0; i < lst.length; i++) {
|
||
|
|
var desc = lst[i].name;
|
||
|
|
var nod = descs.children[i];
|
||
|
|
if (nod) {
|
||
|
|
nx.gui.setString(nod, "txt", desc);
|
||
|
|
var path = cc.path.join("coms/images/eqm_set" + Math.floor(lst[i].id / 100));
|
||
|
|
nx.gui.setSpriteFrame(nod, "ticon", path);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 取当前列表中伙伴穿戴 holy数据
|
||
|
|
var partner = HC.getModel().getHeroById(this.mdata.partner_id);
|
||
|
|
var name = partner ? partner.name : "None";
|
||
|
|
nx.gui.setString(this.nodUser, "", name);
|
||
|
|
var p_num = 0;
|
||
|
|
for (var _i = 0; _i < this.mdata.list.length; _i++) {
|
||
|
|
var item = this.mdata.list[_i];
|
||
|
|
var idata = {};
|
||
|
|
if (!nx.dt.objEmpty(allEqm)) {
|
||
|
|
for (var pos in HEHY) {
|
||
|
|
var eqm = allEqm[pos];
|
||
|
|
var slot = nx.gui.find(slots, "slot" + pos);
|
||
|
|
var emt = nx.dt.objEmpty(eqm);
|
||
|
|
nx.gui.setActive(slot, "empty", emt);
|
||
|
|
nx.gui.setActive(slot, "tip", false);
|
||
|
|
nx.gui.setActive(slot, "item", !emt);
|
||
|
|
var cmp = nx.gui.getComponent(slot, "item", "cmp.item.base");
|
||
|
|
if (cmp) {
|
||
|
|
if (!emt) {
|
||
|
|
cmp.setData(eqm);
|
||
|
|
} else {
|
||
|
|
cmp.setData(null);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
for (var _pos in HEHY) {
|
||
|
|
var _slot = nx.gui.find(slots, "slot" + _pos);
|
||
|
|
nx.gui.setActive(_slot, "empty", true);
|
||
|
|
nx.gui.setActive(_slot, "tip", false);
|
||
|
|
nx.gui.setActive(_slot, "item", false);
|
||
|
|
var _cmp = nx.gui.getComponent(_slot, "item", "cmp.item.base");
|
||
|
|
if (_cmp) {
|
||
|
|
_cmp.setData(null);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
nx.gui.setActive(this, "sch_info", this.mdata.is_open != 0);
|
||
|
|
if (this.nodAddnew) {
|
||
|
|
nx.gui.setActive(this.nodAddnew, "", this.mdata.is_open == 0);
|
||
|
|
}
|
||
|
|
if (this.nodItem) {
|
||
|
|
nx.gui.setActive(this.nodItem, "", this.mdata.is_open == 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
getAllHolyLst: function getAllHolyLst(_list) {
|
||
|
|
if (!_list) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
;
|
||
|
|
if (_list.length == 0) {
|
||
|
|
return {};
|
||
|
|
}
|
||
|
|
;
|
||
|
|
var holy_list = {}; //神装数据
|
||
|
|
for (var k in _list) {
|
||
|
|
var v = _list[k];
|
||
|
|
if (v.item_id) {
|
||
|
|
var item_vo = {};
|
||
|
|
if (v.partner_id == 0) {
|
||
|
|
//在装备背包中
|
||
|
|
item_vo = BackpackController.getInstance().getModel().getBagItemById(BackPackConst.Bag_Code.EQUIPS, v.item_id);
|
||
|
|
} else {
|
||
|
|
//英雄已穿戴
|
||
|
|
item_vo = HeroController.getInstance().getModel().getHolyEquipById(v.item_id);
|
||
|
|
}
|
||
|
|
if (item_vo && item_vo.config) {
|
||
|
|
holy_list[item_vo.config.type] = item_vo;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return holy_list;
|
||
|
|
},
|
||
|
|
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 HC = HeroController.getInstance();
|
||
|
|
var self = this;
|
||
|
|
var modify = function modify(_name) {
|
||
|
|
HC.sender25221(self.mdata.id, self.mdata.partner_id, _name, self.mdata.list);
|
||
|
|
};
|
||
|
|
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 HC = HeroController.getInstance();
|
||
|
|
// let pfg = game.configs.sprite_data.data_elfin_plan[this.index + 1];
|
||
|
|
var have = BackpackController.getInstance().getModel().getItemNumByBid(this.mdata.open_cost[0][0]);
|
||
|
|
var need = this.mdata.open_cost[0][1];
|
||
|
|
// 不足弹出提示
|
||
|
|
if (have < need) {
|
||
|
|
nx.tbox(nx.text.getKey("elfin_hatch_unlock_5"));
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
var mat0 = this.mdata.open_cost[0][0];
|
||
|
|
// let txt = nx.text.format( "lab_heaven_msg_tips_19n", need, this.index + 1 );
|
||
|
|
var buy_ori = nx.text.format("lab_heaven_msg_tips_19", String(mat0), need, this.index + 1);
|
||
|
|
var des_str = buy_ori;
|
||
|
|
nx.mbox(des_str, ['cancel', 'confirm'], function (_key, _box) {
|
||
|
|
_box.close();
|
||
|
|
if (_key == "confirm") {
|
||
|
|
HC.sender25223();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
onTouchSlot: function onTouchSlot(_partId) {
|
||
|
|
var stype = parseInt(_partId);
|
||
|
|
var slots = nx.gui.find(this.nodItem, "slots");
|
||
|
|
// 取相关的战斗义肢
|
||
|
|
// 点击装备槽
|
||
|
|
var self = this;
|
||
|
|
var eqm = {};
|
||
|
|
var HC = HeroController.getInstance();
|
||
|
|
var nod = nx.gui.find(slots, "slot" + stype);
|
||
|
|
var cmp = nx.gui.getComponent(nod, "item", "cmp.item.base");
|
||
|
|
if (cmp) {
|
||
|
|
eqm = cmp.mdata;
|
||
|
|
}
|
||
|
|
var partner = HC.getModel().getHeroById(this.mdata.partner_id);
|
||
|
|
|
||
|
|
// 脱下
|
||
|
|
var takeoff = function takeoff() {
|
||
|
|
HC.sender25221(self.mdata.id, self.mdata.partner_id, self.mdata.name, {});
|
||
|
|
};
|
||
|
|
|
||
|
|
// 洗炼
|
||
|
|
var refinement = function refinement() {
|
||
|
|
if (self.mdata.partner_id == 0) {
|
||
|
|
nx.tbox("HolyAttachNoUser");
|
||
|
|
return;
|
||
|
|
} else {
|
||
|
|
HC.openHolyequipmentRefreshAttPanel(true, eqm, partner);
|
||
|
|
}
|
||
|
|
|
||
|
|
//
|
||
|
|
};
|
||
|
|
|
||
|
|
// 更换
|
||
|
|
var change = function change() {
|
||
|
|
var slt = [];
|
||
|
|
slt = nx.dt.objClone(self.mdata.list);
|
||
|
|
var show = partner ? partner : 0;
|
||
|
|
HC.openHolyChangePanel(true, stype, show, self.mdata.list, function (_id, _panel) {
|
||
|
|
var data = {
|
||
|
|
"partner_id": _id.mdata.partner_id,
|
||
|
|
"item_id": _id.eqm
|
||
|
|
};
|
||
|
|
var hero_lst = self.getAllHolyLst(slt);
|
||
|
|
// let dataL = self.getAllHolyLst( [data] );
|
||
|
|
var tch = BackpackController.getInstance().getModel().getBagItemById(BackPackConst.Bag_Code.EQUIPS, _id.eqm);
|
||
|
|
// console.log( "处理所有的holy数据-------->>>>" + JSON.stringify( hero_lst ) );
|
||
|
|
var sls = [];
|
||
|
|
var allPlan = HC.getModel().getHolyEquipmentPlanData();
|
||
|
|
for (var i in allPlan) {
|
||
|
|
var plan = allPlan[i];
|
||
|
|
if (plan.id == _id.mdata.id) {
|
||
|
|
sls = plan.list;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// 判断是否是同类型替换
|
||
|
|
for (var _i2 in hero_lst) {
|
||
|
|
var item = hero_lst[_i2];
|
||
|
|
if (item.config.type == tch.config.type) {
|
||
|
|
item = tch;
|
||
|
|
}
|
||
|
|
if (nx.dt.arrEmpty(sls)) {
|
||
|
|
sls.push({
|
||
|
|
"partner_id": _id.mdata.partner_id,
|
||
|
|
"item_id": item.id
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
for (var _i3 = 0; _i3 < sls.length; _i3++) {
|
||
|
|
if (!(sls[_i3].item_id == item.item_id)) {
|
||
|
|
sls.push(item);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (nx.dt.arrEmpty(sls)) {
|
||
|
|
sls.push(data);
|
||
|
|
} else {
|
||
|
|
for (var _i4 = 0; _i4 < sls.length; _i4++) {
|
||
|
|
if (!(sls[_i4].item_id == data.item_id)) {
|
||
|
|
sls.push(data);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
HC.sender25221(_id.mdata.id, _id.mdata.partner_id, _id.mdata.name, sls);
|
||
|
|
}, function (_id, _panel) {
|
||
|
|
var allPlan = HC.getModel().getHolyEquipmentPlanData();
|
||
|
|
for (var i in allPlan) {
|
||
|
|
var plan = allPlan[i];
|
||
|
|
if (plan.id == _id.mdata.id) {
|
||
|
|
slt = plan.list;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
for (var _i5 = 0; _i5 < slt.length; _i5++) {
|
||
|
|
var s = slt[_i5];
|
||
|
|
if (s.item_id == _id.eqm) {
|
||
|
|
slt.splice(_i5, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
HC.sender25221(_id.mdata.id, _id.mdata.partner_id, _id.mdata.name, slt);
|
||
|
|
}, self.mdata);
|
||
|
|
};
|
||
|
|
|
||
|
|
// 当前装备操作
|
||
|
|
if (!nx.dt.objEmpty(eqm)) {
|
||
|
|
HC.openEquipChangePanel(true, eqm, function (_op, _panel) {
|
||
|
|
_panel.close();
|
||
|
|
if (_op == "takeoff") {
|
||
|
|
takeoff();
|
||
|
|
}
|
||
|
|
if (_op == "change") {
|
||
|
|
change();
|
||
|
|
}
|
||
|
|
if (_op == "refinement") {
|
||
|
|
refinement();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
// 新装备穿戴
|
||
|
|
else {
|
||
|
|
change();
|
||
|
|
}
|
||
|
|
},
|
||
|
|
onTouchSelect: function onTouchSelect() {
|
||
|
|
// 返回
|
||
|
|
|
||
|
|
var HC = HeroController.getInstance();
|
||
|
|
var pid = 0;
|
||
|
|
if (HC) {
|
||
|
|
pid = this.mdata.dif_id ? this.mdata.dif_id : this.mdata.partner_id;
|
||
|
|
var eqms = HC.getModel().getHeroHolyEquipList(pid);
|
||
|
|
var holy_eqm = [];
|
||
|
|
for (var i in eqms) {
|
||
|
|
var holy = eqms[i];
|
||
|
|
holy_eqm.push({
|
||
|
|
partner_id: pid,
|
||
|
|
item_id: holy.id
|
||
|
|
});
|
||
|
|
}
|
||
|
|
HC.sender25221(this.mdata.id, pid, this.mdata.name, holy_eqm);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
onTouchUse: function onTouchUse() {
|
||
|
|
var HC = HeroController.getInstance();
|
||
|
|
HC.sender25224(this.mdata.dif_id, this.mdata.id);
|
||
|
|
},
|
||
|
|
onTouchClean: function onTouchClean() {
|
||
|
|
var HC = HeroController.getInstance();
|
||
|
|
HC.sender25221(this.mdata.id, this.mdata.partner_id, this.mdata.name, {});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
cc._RF.pop();
|