"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();