Files
fc/dev/project/library/imports/86/86d44209-b56f-4e9d-aebf-a97dcb7c7c08.js
2026-05-24 10:21:26 +08:00

340 lines
8.3 KiB
JavaScript

"use strict";
cc._RF.push(module, '86d44IJtW9Ona6/qX3LfHwI', 'cmp.partner.reform.recycle');
// Scripts/mod/partner/cmps/reform/cmp/cmp.partner.reform.recycle.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 HeroEvent = require("hero_event");
var HeroControl = require("hero_controller");
var TipsController = require("tips_controller");
var HCT = HeroConst.CampType;
var SMax = 20; // 单次选择数量上限
cc.Class({
"extends": BridgeComponent,
properties: {
fromPanel: {
"default": null,
type: cc.Node
},
fromCamp: {
"default": null,
type: FxTogs
},
fromList: {
"default": null,
type: FxSVC
},
fromTotal: {
"default": null,
type: cc.Node
},
fromSelect: {
"default": null,
type: cc.Node
},
fromOps: {
"default": null,
type: cc.Node
},
resPanel: {
"default": null,
type: cc.Node
},
resEmpty: {
"default": null,
type: cc.Node
},
resNeeds: {
"default": null,
type: cc.Node
}
},
// 载入
onLoad: function onLoad() {
var _this = this;
this._super();
this.curCamp = -1;
this.selects = [];
this.results = [];
// // 事件监听
this.bindGEvent(HeroEvent.Del_Hero_Event, this.onDeletePartner.bind(this));
this.bindGEvent(HeroEvent.Hero_Reset_Look_Event, this.onRecyclePreivew.bind(this));
// Tog监听
this.fromCamp.posTog = this.onTogCamp.bind(this);
this.fromCamp.togTo(0);
this.scheduleOnce(function () {
_this.onTogCamp(HCT.eNone);
}, 0.01);
this.freshOps();
this.clearResult();
},
// 重载:关闭前
onPreClosed: function onPreClosed() {
this.fromList.rebuild([]);
},
// 伙伴删除
onDeletePartner: function onDeletePartner(_lst) {
this.selects = [];
this.freshList();
this.freshOps();
this.clearResult();
},
// 回收预览
onRecyclePreivew: function onRecyclePreivew(_data) {
this.results = [];
for (var i in _data) {
var dt = _data[i];
if (dt) {
this.results.push({
bid: dt.id,
count: dt.num
});
}
}
this.freshResult();
},
// 快速选择
onQuickSelect: function onQuickSelect() {
// max
if (this.selects.length >= SMax) {
nx.tbox(nx.text.format("msg_sacrificeMaxNum", SMax));
return;
}
// 添加验证
var self = this;
var check = function check(_pt) {
// 已被选中
if (nx.dt.arrMember(self.selects, _pt.partner_id)) {
return false;
}
// 星级/组队
if (_pt.star >= 4 || _pt.is_in_form > 0) {
return false;
}
return true;
};
// 逐个验证添加
for (var i = 0; i < this.partners.length; ++i) {
if (!check(this.partners[i])) {
continue;
}
// 加入
this.selects.push(this.partners[i].partner_id);
// 够了
if (this.selects.length >= SMax) {
break;
}
}
// max
if (nx.dt.arrEmpty(this.selects)) {
nx.tbox(nx.text.format("msg_sacrificeNoPartner"));
return;
}
this.onTouchConfirm();
// 刷新
this.freshSelect();
this.freshOps();
},
// 取消
onTouchCancel: function onTouchCancel() {
this.selects = [];
this.freshSelect();
this.freshOps();
this.clearResult();
},
// 点击确认
onTouchConfirm: function onTouchConfirm() {
if (nx.dt.arrEmpty(this.selects)) {
return;
}
var lst = [];
this.selects.forEach(function (_id) {
lst.push({
partner_id: _id
});
});
var HC = HeroControl.getInstance();
HC.sender11075(lst);
},
// 回收
onTouchRecycle: function onTouchRecycle() {
if (nx.dt.arrEmpty(this.selects)) {
return;
}
// 高星判断
var adv = false;
var HC = HeroControl.getInstance();
var HM = HC.getModel();
for (var i = 0; i < this.selects.length; ++i) {
var pid = this.selects[i];
var partner = HM.getHeroById(pid);
if (partner && partner.star > 4) {
adv = true;
break;
}
}
var lst = [];
this.selects.forEach(function (_id) {
lst.push({
partner_id: _id
});
});
if (!adv) {
HC.sender11076(lst);
return;
}
// 需要确认
nx.mbox("msg_sacrificeConfirm", ['cancel', 'confirm'], function (_key, _box) {
_box.close();
if (_key == "confirm") {
HC.sender11076(lst);
}
});
},
// 点击帮助
onTouchHelp: function onTouchHelp() {
var TC = TipsController.getInstance();
if (TC) {
var txt = game.configs.partner_data.data_partner_const.game_rule1.desc;
TC.showTextPanel("tip", txt);
}
},
// 阵营切换
onTogCamp: function onTogCamp(_index) {
var idx = parseInt(_index) || 0;
if (this.curCamp == idx) {
return;
}
nx.debug("[Hero]\u9635\u8425\u5207\u6362:" + this.curCamp + " -> " + idx);
this.curCamp = idx;
// 整体刷新
this.freshList();
},
// 选中切换
onFocusChanged: function onFocusChanged(_item) {
// 空
if (nx.dt.objEmpty(_item) || nx.dt.objEmpty(_item.mdata)) {
return;
}
nx.audio.playSFX("audios/effects/touchitem");
// 取消选中
if (this.fromList.isFocus(_item.index)) {
this.fromList.removeFocus(_item.index);
nx.dt.arrDelete(this.selects, function (_t) {
return _t == _item.mdata.partner_id;
});
nx.gui.setString(this.fromSelect, "cur", this.selects.length);
this.freshOps();
if (this.selects.length == 0) {
this.clearResult();
}
this.onTouchConfirm();
return;
}
// 选中添加
if (this.fromList.focusList.length < SMax) {
this.fromList.addFocus(_item.index);
this.selects.push(_item.mdata.partner_id);
nx.gui.setString(this.fromSelect, "cur", this.selects.length);
this.freshOps();
// this.clearResult();
this.onTouchConfirm();
return;
}
},
// 整体刷新
freshList: function freshList() {
var HC = HeroControl.getInstance();
var mod = HC.getModel();
this.partners = mod.getRestHeroListByCamp(this.curCamp, "recycle");
nx.gui.setActive(this.fromList, "empty", nx.dt.arrEmpty(this.partners));
this.fromList.rebuild(this.partners);
nx.gui.setString(this.fromTotal, "txt", this.partners.length);
this.freshSelect();
},
// 刷新选中
freshSelect: function freshSelect() {
// 检查选中
this.fromList.cleanFocus();
for (var i = 0; i < this.partners.length; ++i) {
var pt = this.partners[i];
if (nx.dt.arrMember(this.selects, pt.partner_id)) {
this.fromList.addFocus(i);
}
}
nx.gui.setString(this.fromSelect, "cur", this.fromList.focusList.length);
nx.gui.setString(this.fromSelect, "total", SMax);
},
// 刷新操作
freshOps: function freshOps() {
nx.gui.setActive(this.fromOps, "cancel", nx.dt.arrNEmpty(this.selects));
// nx.gui.setActive( this.fromOps, "confirm", nx.dt.arrNEmpty( this.selects ) );
},
// 重置产出
clearResult: function clearResult() {
this.results = [];
this.freshResult();
},
// 重算产出
freshResult: function freshResult() {
var empty = nx.dt.arrEmpty(this.results);
nx.gui.setActive(this.resEmpty, "", empty);
nx.gui.setActive(this.resNeeds, "", !empty);
nx.gui.setActive(this.resPanel, "tdesc", !empty);
nx.gui.setActive(this.resPanel, "tget", !empty);
nx.gui.setActive(this.resPanel, "desc", !empty);
// 空返回
if (empty) {
return;
}
// 产出刷新
var node = nx.gui.find(this.resNeeds, "list");
if (node) {
var chds = node.children;
for (var i = 0; i < chds.length; ++i) {
var cmp = nx.gui.getComponent(chds[i], "", "cmp.item.inbag");
if (cmp) {
var ret = this.results[i];
if (!ret) {
nx.gui.setActive(cmp, "", false);
} else {
nx.gui.setActive(cmp, "", true);
cmp.setData(ret.bid);
cmp.setCount(ret.count);
}
}
}
}
}
});
cc._RF.pop();