Files
fc/dev/project/library/imports/ad/ad23d83f-dea9-4cc7-b164-543715c37694.js
2026-05-24 10:21:26 +08:00

353 lines
10 KiB
JavaScript

"use strict";
cc._RF.push(module, 'ad23dg/3qlMx7FkVDcVw3aU', 'cmp.partner.reform.equips');
// Scripts/mod/partner/cmps/reform/cmp/cmp.partner.reform.equips.js
"use strict";
/******************************************************************
*
* 伙伴改造页: 装备合成
*
******************************************************************/
var FxTogs = require("nx.fx.togs");
var FxSVC = require("nx.fx.sv.expand");
var BridgeComponent = require("bridge.component");
var HeroConst = require("hero_const");
var BackPackConst = require("backpack_const");
var ForgehouseController = require("forgehouse_controller");
var BackpackController = require("backpack_controller");
var RoleController = require("role_controller");
var HeroController = require("hero_controller");
var FID = require("bridge.function.ids");
var BBC = BackPackConst.Bag_Code;
var BIT = BackPackConst.item_type;
var LabTags = [BIT.WEAPON,
// 武器
BIT.SHOE,
// 鞋子
BIT.CLOTHES,
// 衣服
BIT.HAT // 头盔
];
var HCT = HeroConst.CampType;
cc.Class({
"extends": BridgeComponent,
properties: {
togTypes: {
"default": null,
type: FxTogs
},
svcList: {
"default": null,
type: FxSVC
},
nodSrc: {
"default": null,
type: cc.Node
},
nodTar: {
"default": null,
type: cc.Node
},
nodCounter: {
"default": null,
type: cc.Node
},
nodCost: {
"default": null,
type: cc.Node
},
nodCompOnce: {
"default": null,
type: cc.Node
}
},
// 载入
onLoad: function onLoad() {
var _this = this;
this._super();
// 事件监听
this.bindGEvent(EventId.COMPOSITE_PREVIEW, this.onCompoundPreview.bind(this));
this.bindGEvent(EventId.COMPOSITE_RESULT, this.onCompoundResult.bind(this));
this.curTag = -1;
// Tog监听
this.togTypes.posTog = this.onTogCamp.bind(this);
this.togTypes.togTo(0);
this.scheduleOnce(function () {
_this.onTogCamp(0);
}, 0.01);
},
onEnable: function onEnable() {
HeroController.getInstance().getModel().dealReformEqm();
},
// 重载:关闭前
onPreClosed: function onPreClosed() {
this.svcList.rebuild([]);
},
// 整体刷新
freshList: function freshList() {
var FC = ForgehouseController.getInstance();
var FM = FC.getModel();
var BC = BackpackController.getInstance();
var BM = BC.getModel();
var RC = RoleController.getInstance();
var role = RC.getRoleVo();
var all = FM.getBackEquipsData(this.curTag);
nx.gui.setActive(this.svcList, "empty", nx.dt.arrEmpty(all));
this.svcList.rebuild(all);
var cfg = game.configs.partner_eqm_data.data_partner_const;
//role.lev >= cfg.synthesis_character_lev.val ||
if (role.vip_lev >= cfg.synthesis_vip_lev.val) {
nx.gui.setActive(this.nodCompOnce, "lock", false);
} else {
nx.gui.setActive(this.nodCompOnce, "lock", false);
nx.gui.setString(this.nodCompOnce, "lock/vip", nx.text.format("VIPLockTip", cfg.synthesis_vip_lev.val));
}
if (nx.dt.arrEmpty(all)) {
return;
}
this.canComposeid = 0;
var self = this;
// 可合成判断
var check = function check(_data) {
var expend = _data ? _data.expend : null;
if (nx.dt.arrEmpty(expend)) {
return false;
}
var can_composite = false;
var coin_stauts = false;
if (expend && expend.length >= 2 && expend[0].length >= 2) {
var need_bid = expend[0][0];
var need_num = expend[0][1];
var max_num = BM.getPackItemNumByBid(BBC.EQUIPS, need_bid);
can_composite = max_num >= need_num;
var need_coin = expend[1][1];
coin_stauts = need_coin <= role.coin;
}
if (can_composite) {
// self.canComposeid = _data.id ;
}
return can_composite && coin_stauts;
};
var count = 0;
// 遍历
var chds = this.svcList.bindSCV.content.children;
for (var i = 0; i < chds.length; ++i) {
var node = chds[i];
if (node && node.svItem) {
var data = all[node.svOrder];
nx.gui.setActive(node.svItem, "tip", check(data));
if (check(data)) {
count++;
}
}
}
self.canComposeid = chds[chds.length - 1].svItem.mdata.id;
// 标的置空
this.onFocusChanged(chds[0].svItem);
},
// 设置合成标的
setTarget: function setTarget(_tar) {
// 空处理
if (nx.dt.objEmpty(_tar) || !nx.dt.numPositive(_tar.id, false) || nx.dt.arrEmpty(_tar.expend)) {
this.target = null;
nx.gui.setActive(this.nodSrc, "item/empty", true);
nx.gui.setActive(this.nodSrc, "item/icon", false);
nx.gui.setActive(this.nodTar, "item/empty", true);
nx.gui.setActive(this.nodTar, "item/icon", false);
this.setLimit(0, true);
this.setCost(0);
return;
}
var BC = BackpackController.getInstance();
var BM = BC.getModel();
// 标的
nx.gui.setActive(this.nodTar, "item/empty", false);
nx.gui.setActive(this.nodTar, "item/icon", true);
var icon = nx.gui.getComponent(this.nodTar, "item/icon", "cmp.item.base");
if (icon) {
icon.setData(_tar.id);
}
var limit = 0;
// 材料
nx.gui.setActive(this.nodSrc, "item/empty", false);
nx.gui.setActive(this.nodSrc, "item/icon", true);
icon = nx.gui.getComponent(this.nodSrc, "item/icon", "cmp.item.base");
if (icon) {
var info = _tar.expend[0];
var have = BM.getPackItemNumByBid(BBC.EQUIPS, info[0]);
icon.setData(info[0]);
nx.gui.setString(icon, "count", have + '/' + info[1]);
limit = Math.floor(have / info[1]);
var color = have < info[1] ? cc.Color.RED : cc.Color.GREEN;
nx.gui.setColor(icon, "count", color);
}
// 数量
this.setLimit(limit, true);
// 花费
this.setCost(_tar.expend[1], limit >= 1);
this.target = _tar;
},
// 设置限制
setLimit: function setLimit(_limit, _reset) {
if (_reset === void 0) {
_reset = false;
}
// 置空
if (!nx.dt.numPositive(_limit, false)) {
this.limit = 0;
this.range = [0, 0];
nx.gui.setString(this.nodCounter, "num", 0);
nx.gui.setLocked(this.nodCounter, "dec", true);
nx.gui.setLocked(this.nodCounter, "inc", true);
return;
}
// 上下限更新
if (_reset) {
this.range = [1, _limit];
}
// 更新
this.limit = cc.math.clamp(_limit, this.range[0], this.range[1]);
nx.gui.setString(this.nodCounter, "num", this.limit);
nx.gui.setLocked(this.nodCounter, "dec", this.limit <= this.range[0]);
nx.gui.setLocked(this.nodCounter, "inc", this.limit >= this.range[1]);
},
// 设置合成花费
setCost: function setCost(_cost, _enough) {
if (_enough === void 0) {
_enough = true;
}
// 花费
var valid = nx.dt.arrNEmpty(_cost) && _cost.length == 2;
nx.gui.setActive(this.nodCost, "", valid);
if (this.nodCost && valid) {
nx.gui.setString(this.nodCost, "txt", _cost[1]);
nx.bridge.setIconS(this.nodCost, "icon", _cost[0]);
}
// 操作
nx.gui.setLocked(this, "panel/show/convert", !valid || !_enough);
// nx.gui.setLocked( this, "panel/show/convertOnce", !valid || !_enough );
},
// 阵营切换
onTogCamp: function onTogCamp(_index) {
var idx = parseInt(_index) || 0;
var tag = LabTags[idx];
if (this.curTag == tag) {
return;
}
nx.debug("[Hero]\u9635\u8425\u5207\u6362:" + this.curTag + " -> " + tag);
this.curTag = tag;
// 整体刷新
this.freshList();
},
// 选中切换
onFocusChanged: function onFocusChanged(_item) {
// 空
if (nx.dt.objEmpty(_item) || nx.dt.objEmpty(_item.mdata)) {
return;
}
nx.audio.playSFX("audios/effects/touchitem");
// 聚焦
this.svcList.cleanFocus();
this.svcList.addFocus(_item.index);
// 标的设置
this.setTarget(_item.mdata);
},
// 点击数量增减
onTouchAddDec: function onTouchAddDec(_flag) {
var step = _flag == "1" ? 1 : -1;
this.setLimit(this.limit + step);
},
// 点击合成
onTouchCompound: function onTouchCompound() {
// 无效
if (nx.dt.objEmpty(this.target) || !nx.dt.numPositive(this.limit, false)) {
nx.tbox("forge_str10");
return;
}
// 合成
var FC = ForgehouseController.getInstance();
FC.send11080(this.target.id, this.limit);
},
// 点击一键合成
onTouchCompoundOnce: function onTouchCompoundOnce() {
var RC = RoleController.getInstance();
var role = RC.getRoleVo();
var cfg = game.configs.partner_eqm_data.data_partner_const;
//role.lev >= cfg.synthesis_character_lev.val ||
if (role.vip_lev < cfg.synthesis_vip_lev.val) {
this.onTouchGo();
return;
}
// 无效
if (nx.dt.objEmpty(this.target)) {
nx.tbox("forge_str10");
return;
}
// 合成预览
var FC = ForgehouseController.getInstance();
var FM = FC.getModel();
FM.setCompSendID(this.canComposeid);
FC.send11079(this.canComposeid, this.range[1]);
},
// 点击帮助
onTouchHelp: function onTouchHelp() {
var TC = TipsController.getInstance();
if (TC) {
var txt = game.configs.partner_artifact_data.data_artifact_const.artifact_rule.desc;
TC.showTextPanel("tip", nx.text.getKey(txt));
}
},
// 点击合成记录
onTouchRecord: function onTouchRecord() {
var FC = ForgehouseController.getInstance();
FC.openEquipmentCompRecordWindow(true);
},
// 合成预览
onCompoundPreview: function onCompoundPreview(_data) {
var _this2 = this;
// console.log( _data );
var FC = ForgehouseController.getInstance();
FC.openEquipmentAllSynthesisWindow(true, _data, function (_ret) {
FC.send11081(_this2.canComposeid, _this2.range[1]);
FC.openEquipmentAllSynthesisWindow(false);
});
},
// 合成结果
onCompoundResult: function onCompoundResult(_data) {
// console.log( _data );
this.freshList();
HeroController.getInstance().getModel().dealReformEqm();
},
onTouchGo: function onTouchGo() {
var cfg = game.configs.partner_eqm_data.data_partner_const;
var lev = cfg.synthesis_vip_lev.val;
nx.mbox(nx.text.format("VIPBuyTip", lev), ['cancel', 'VIPActive'], function (_key, _box) {
_box.close();
if (_key == "VIPActive") {
nx.bridge.jumper.jump2Window(FID.ActMySteryGift, {
id: 2
});
}
});
}
});
cc._RF.pop();