"use strict"; cc._RF.push(module, '76effvAZaZLVa9FK6laIImv', 'wnd.summon.crystal.swap'); // Scripts/mod/summon/crystal/wnd.summon.crystal.swap.js "use strict"; /****************************************************************** * * 水晶卡牌召喚 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var FxTogs = require("nx.fx.togs"); var FxSVC = require("nx.fx.sv.expand"); var HeroConst = require("hero_const"); var HeroEvent = require("hero_event"); var HeroControl = require("hero_controller"); var BackpackController = require("backpack_controller"); var TipsController = require("tips_controller"); var CRYModel = require("summon.crystal.mod"); var HCT = HeroConst.CampType; cc.Class({ "extends": BridgeWindow, properties: { togCamp: { "default": null, type: FxTogs }, svcList: { "default": null, type: FxSVC }, nodFrom: { "default": null, type: cc.Node }, nodTo: { "default": null, type: cc.Node }, nodEmpty: { "default": null, type: cc.Node }, nodReady: { "default": null, type: cc.Node }, nodResult: { "default": null, type: cc.Node }, lockResult: { "default": null, type: cc.Node } }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { var _this = this; this.curCamp = -1; this.partners = []; this.partner = null; this.targetBid = 0; // 事件监听 this.bindGEvent(HeroEvent.Del_Hero_Event, this.onPartnerChanged.bind(this)); this.bindGEvent(HeroEvent.Hero_Data_Add, this.onPartnerChanged.bind(this)); // Tog监听 this.togCamp.posTog = this.onTogCamp.bind(this); this.togCamp.togTo(0); this.onTogCamp(HCT.eNone); // 置空 this.setEmpty(); // 现场恢复 CRYModel.getInstance().reqSwapRecord(function (_ret, _data) { if (!_ret || !_data || !nx.dt.numPositive(_data.partner_id, false)) { return; } // 设置当前 for (var i = 0; i < _this.partners.length; ++i) { var pt = _this.partners[i]; if (pt && pt.id == _data.partner_id) { _this.onFocusChanged({ index: i, mdata: pt }); _this.setTarget(_data.new_partner_bid); return; } } }); }, // 重载:关闭前 onPreClosed: function onPreClosed() { this.svcList.rebuild([]); }, // 置空 setEmpty: function setEmpty() { this.setPartner(null); }, // 设置当前伙伴 setPartner: function setPartner(_partner) { this.partner = _partner; this.setTarget(0); // 置空 if (!this.partner) { this.svcList.cleanFocus(); var _spine = nx.gui.getComponent(this.nodFrom, "smod", "nx.fx.spine"); if (_spine) { _spine.stop(); } nx.gui.setActive(this.nodFrom, "smod", false); nx.gui.setActive(this.nodFrom, "infos", false); return; } // 模型 var key = this.partner.bid + "_" + this.partner.star; var cfg = gdata("partner_data", "data_partner_star", key); var spine = nx.gui.getComponent(this.nodFrom, "smod", "nx.fx.spine"); if (cfg && spine) { var path = PathTool.getSpinePath(cfg.res_id, cfg.res_id, false); spine.load(path, function (_e) { if (!_e) { spine.action("stand2", true); } else { spine.stop(); } }); } nx.gui.setActive(this.nodFrom, "smod", true); // 信息 var infos = nx.gui.setActive(this.nodFrom, "infos", true); var sf = cc.path.join("coms/images/camps" + this.partner.camp_type); nx.gui.setSpriteFrame(infos, "camp", sf); nx.gui.setString(infos, "lv", "Lv." + this.partner.lev); nx.gui.setString(infos, "name", nx.text.getKey(this.partner.name)); var st = cc.path.join("coms/images", "star" + this.partner.star); nx.gui.setSpriteFrame(infos, "star", st); }, // 更新目标 setTarget: function setTarget(_bid) { this.targetBid = _bid; this.freshOps(); // 置空 if (!nx.dt.numPositive(this.targetBid, false)) { // 模型 nx.gui.setActive(this.nodTo, "empty", true); nx.gui.setActive(this.nodTo, "smod", false); var _spine2 = nx.gui.getComponent(this.nodTo, "smod", "nx.fx.spine"); if (_spine2) { _spine2.stop(); } if (!this.partner) { nx.gui.setActive(this.nodTo, "infos", false); } else { // 信息 var _infos = nx.gui.setActive(this.nodTo, "infos", true); var sf = cc.path.join("coms/images/camps" + this.partner.camp_type); nx.gui.setSpriteFrame(_infos, "camp", sf); nx.gui.setString(_infos, "lv", "Lv." + this.partner.lev); nx.gui.setString(_infos, "name", nx.text.getKey("????")); var st = cc.path.join("coms/images", "star" + this.partner.star); nx.gui.setSpriteFrame(_infos, "star", st); } return; } // 模型 nx.gui.setActive(this.nodTo, "empty", false); nx.gui.setActive(this.nodTo, "smod", true); var key = this.targetBid + "_" + this.partner.star; var cfg = gdata("partner_data", "data_partner_star", key); var spine = nx.gui.getComponent(this.nodTo, "smod", "nx.fx.spine"); if (cfg && spine) { var path = PathTool.getSpinePath(cfg.res_id, cfg.res_id, false); spine.load(path, function (_e) { if (!_e) { spine.action("stand2", true); } else { spine.stop(); } }); } // 名字 var infos = nx.gui.setActive(this.nodTo, "infos", true); var base = game.configs.partner_data.data_partner_base[this.targetBid]; nx.gui.setString(infos, "name", nx.text.getKey(base ? base.name : "")); // 特效 var spine2 = nx.gui.getComponent(this.nodTo, "show", "nx.fx.spine"); if (spine2) { var spine_path = PathTool.getSpinePath("E80009", "action", false); spine2.play(spine_path, "action1_blue", function () {}, false); } }, // 整体刷新 freshList: function freshList(_reset) { if (_reset === void 0) { _reset = false; } var HC = HeroControl.getInstance(); var mod = HC.getModel(); // 符合条件判断 var camp = this.curCamp; var good = function good(_hero) { // 4,5星过滤 if (!_hero || _hero.is_in_form > 0 || _hero.star < 4 || _hero.star > 5) { return false; } // 全阵营(除光暗) if (camp == HCT.eNone) { if (_hero.camp_type != HCT.eLight && _hero.camp_type != HCT.eDark) { return true; } return false; } return camp == _hero.camp_type; }; // 阵营伙伴统计 this.partners = []; var heros = mod.getHeroList(); for (var id in heros) { var hero = heros[id]; if (good(hero)) { this.partners.push(hero); } } // 排序 this.partners.sort(function (_a, _b) { return _b.star - _a.star; }); this.svcList.rebuild(this.partners); this.setPartner(null); }, // 伙伴增删 onPartnerChanged: function onPartnerChanged() { // console.log( "刷新伙伴信息" ); this.setEmpty(); this.freshList(true); }, // 阵营切换 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"); // 聚焦 this.svcList.cleanFocus(); this.svcList.addFocus(_item.index); this.setPartner(_item.mdata); }, // ------------------------------------------------------- // 操作相关 // ------------------------------------------------------- // 操作更新 freshOps: function freshOps() { // 空 if (!this.partner) { this.nodEmpty.active = true; this.nodReady.active = false; this.nodResult.active = false; this.lockResult.active = false; return; } // 准备 if (this.partner && !nx.dt.numPositive(this.targetBid, false)) { this.nodEmpty.active = false; this.nodResult.active = false; this.lockResult.active = false; this.nodReady.active = true; // 花费 var DATA = game.configs.recruit_high_data.data_seerpalace_const; var key = "hero_change" + this.partner.star; var val = DATA[key].val[0]; nx.bridge.setIconS(this.nodReady, "cost/icon", val[0]); nx.gui.setString(this.nodReady, "cost/txt", val[1]); var BC = BackpackController.getInstance(); var have = BC.getModel().getItemNumByBid(val[0]); var btn = nx.gui.getComponent(this.nodReady, "convert", "nx.fx.button"); btn.lock(have < val[1]); return; } // 保存确认 this.nodEmpty.active = false; this.nodReady.active = false; this.nodResult.active = true; this.lockResult.active = true; }, // 点击置换 onTouchConvert: function onTouchConvert() { var _this2 = this; if (!this.partner) { return; } var CRY = CRYModel.getInstance(); CRY.reqSwap(this.partner.id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this2.setTarget(_data.new_partner_bid); _this2.freshOps(); }); }, // 点击取消 onTouchCancel: function onTouchCancel() { var _this3 = this; if (!this.partner) { return; } var CRY = CRYModel.getInstance(); CRY.reqSwapCancel(this.partner.id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this3.setPartner(_this3.partner); }); }, // 点击保存 onTouchSave: function onTouchSave() { var _this4 = this; if (!this.partner) { return; } var CRY = CRYModel.getInstance(); CRY.reqSwapSave(this.partner.id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this4.setPartner(null); }); }, // 点击保存锁定区 onTouchLockArea: function onTouchLockArea() { nx.tbox("转换保存提醒"); }, // 点击帮助 onTouchHelp: function onTouchHelp() { var TC = TipsController.getInstance(); if (TC) { var DATA = game.configs.recruit_high_data.data_seerpalace_const; var txt = DATA.game_rule2.desc; TC.showTextPanel("tip", nx.text.getKey(txt)); } } }); cc._RF.pop();