340 lines
8.3 KiB
JavaScript
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();
|