353 lines
10 KiB
JavaScript
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();
|