Files

401 lines
12 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 10:21:26 +08:00
"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();