"use strict"; cc._RF.push(module, '9b145Fi+U9N9qCEmtnqZ0Yd', 'cmp.summon.infinite'); // Scripts/mod/summon/infinite/cmp.summon.infinite.js "use strict"; /****************************************************************** * Copyright(C) 2019 - 2020 Nx Studio * * 常规召唤页 * * 2018.05.18 ******************************************************************/ var MenuPage = require("cmp.com.menu.page"); var SummonDefine = require("summon.define"); var SummonMod = require("summon.mod"); var HeroController = require("hero_controller"); var BackPackController = require("backpack_controller"); var BridgeItemBinder = require("bridge.binder.item.icon.count"); var SCRT = SummonDefine.Status; var FID = require("bridge.function.ids"); var EmptyBG = ""; cc.Class({ "extends": MenuPage, properties: { nodOps: { "default": null, type: cc.Node }, nodCoin: { "default": null, type: BridgeItemBinder }, labTimes: { "default": null, type: cc.Node } }, // 载入 onLoad: function onLoad() { this._super(); this.setEmpty(); var cmp = nx.gui.getComponent(this, "sp", "nx.fx.spine"); if (cmp) { cmp.load("resDB/models/H30031/show", function (_e) { if (!_e) { cmp.action("action1", true); } else { cmp.stop(); } }); } }, // 显示 onEnable: function onEnable() { var _this = this; var SC = SummonMod.getInstance(); SC.reqInfiniteData(function (_ret, _data) { if (!_ret) { _this.setEmpty(); nx.tbox(_data); return; } _this.data = nx.dt.objClone(_data); _this.updateBase(_data); _this.updateData(_data); }); // 视图监听 this.vbind([["INFTimes", this.onRemainTimes.bind(this)], ["INFCurrent", this.onCurrentChanged.bind(this)]]); }, // 关闭 onDisable: function onDisable() { // 视图监听解除 this.vunbind(); }, // 置空 setEmpty: function setEmpty() { // nx.gui.setSpriteFrame( this, "bg", EmptyBG ); this.costId = 0; this.nodCoin.active = false; this.nodOps.active = false; }, // 召唤数据刷新 updateSummonData: function updateSummonData() { var _this2 = this; var SC = SummonMod.getInstance(); var SM = SC.getModel(); var data = SM.getSummonGroupData(); // 数据无效,重新请求 if (nx.dt.arrEmpty(data)) { SC.send23200(function (_data) { _this2.updateSummonData(); }); return; } // 获取当前页数据 var info = null; for (var i in data) { var t = data[i]; if (t && t.group_id == this.sumId) { info = t; break; } } // 更新 this.updateData(info); }, // 基础更新 updateBase: function updateBase(_data) { // 无效配置 if (nx.dt.objEmpty(_data) || !nx.dt.numPositive(_data.camp_id, false)) { this.setEmpty(); return; } // 召唤配置 var DATA = game.configs.infinite_ten_recruit_data; var camp = DATA.data_action[_data.camp_id]; var cfgs = DATA.data_summon[camp.group_id]; if (nx.dt.objEmpty(cfgs)) { nx.error("无效召唤配置:", _data.camp_id); this.setEmpty(); return; } // 背景图 // let path = cc.path.join( "resDB/bigs", cfgs.call_bg ); // nx.gui.setSpriteFrame( this, "bg", path ); // 看板娘 // let path = cc.path.join( "resDB/bigs", cfgs.call_bg ); // nx.gui.setSpriteFrame( this, "panel/role", path ); // 广告语 var path = cc.path.join("locals", nx.getLocLanguage(), "images/summon", cfgs.word_art); nx.gui.setSpriteFrame(this, "panel/word", path); // 货币更新 var tid = 0; if (nx.dt.arrNEmpty(cfgs.loss_item_ten) && nx.dt.arrNEmpty(cfgs.loss_item_ten[0])) { tid = cfgs.loss_item_ten[0][0]; } // 货币图标设置 var tinfo = gitemdata(tid); if (nx.dt.objEmpty(tinfo)) { nx.error("无效召唤货币:", tid); } else { this.costId = tid; this.nodCoin.active = true; this.nodCoin.setID(tid); } }, // 更新数据 updateData: function updateData(_data) { // 置空 if (nx.dt.objEmpty(_data)) { this.setEmpty(); return; } // 召唤配置 var DATA = game.configs.infinite_ten_recruit_data; var camp = DATA.data_action[_data.camp_id]; var cfgs = DATA.data_summon[camp.group_id]; if (nx.dt.objEmpty(cfgs)) { nx.error("无效召唤配置:", _data.camp_id); this.setEmpty(); return; } // 更新当前货币 // 消耗修正 var count = this.updateCoin(); var autoOp = function autoOp(_node, _item) { var ret = { enough: false, type: SCRT.Item, item: _item[0] || [] }; // 所需道具不足 && 但是有替代品 var bid = ret.item[0]; var need = ret.item[1]; ret.enough = count >= need; // 参数补充 ret.bid = bid; ret.need = need; // 货币刷新 var tinfo = gitemdata(bid); nx.bridge.setIcon(_node, "need/list/icon", tinfo.icon); nx.gui.setString(_node, "need/list/num", need); return ret; }; this.nodOps.active = true; var rec = nx.dt.arrNEmpty(_data.partner_bids); nx.gui.setActive(this.nodOps, "record", rec); nx.gui.setActive(this.nodOps, "ten", !rec); var ten = nx.gui.find(this.nodOps, "ten"); this.tenArgs = autoOp(ten, cfgs.loss_item_ten); }, // 当前改变 onCurrentChanged: function onCurrentChanged(_lst) { var empty = nx.dt.arrEmpty(_lst); nx.gui.setActive(this.nodOps, "record", !empty); nx.gui.setActive(this.nodOps, "ten", empty); }, // 更新当前货币 updateCoin: function updateCoin() { var BC = BackPackController.getInstance(); var count = BC.getModel().getBackPackItemNumByBid(this.costId); return count; }, // 点击货币 onTouchCoin: function onTouchCoin() {}, // 点击说明 onTouchRule: function onTouchRule() { // 召唤配置 var DATA = game.configs.infinite_ten_recruit_data; var camp = DATA.data_action[this.data.camp_id]; if (nx.dt.objEmpty(camp)) { nx.error("无效召唤配置:", this.data.camp_id); return; } var params = { desc: camp.desc, rates: [] }; var pros = DATA.data_probability[camp.group_id]; for (var i in pros) { var t = pros[i]; params.rates.push([t.name, t.probability]); } nx.bridge.createPanel("WndSummonRateShow", params); }, // 点击十次召唤 onTouchTen: function onTouchTen() { this.doSummon(10, this.tenArgs); }, // 召唤请求 doSummon: function doSummon(_times, _args) { // 沒有次數了 var times = nx.bridge.vget("INFTimes"); if (times <= 0) { nx.tbox("SummonTimesNotEnough"); return; } // 不够召唤处理 if (!_args.enough) { nx.tbox("SummonItemNotEnough"); return; } // 容量检查 if (!this.checkVolume(_times)) { nx.tbox("PartnerBagFull"); nx.bridge.jumper.jump2Window(FID.Recycle); return; } var self = this; var SC = SummonMod.getInstance(); var args = { op: "infinite", cb: function cb(_ret) { if (!_ret) { self.onTouchTen(); return; } nx.mbox("SummonInfinite", ['no', 'yes'], function (_key, _box) { _box.close(); if (_key == 'yes') { nx.bridge.summonAnimation.doStop(); SC.reqInfiniteConfirm(0, function (_ok, _data) { // 发送引导事件 if (nx.bridge.plot) { nx.bridge.plot.postKey("infinite_done"); } if (!_ok) { nx.tbox(_data); return; } self.onEnable(); }); } }); } }; SC.reqInfiniteSummon(function (_ok, _data) { // 失败 if (!_ok) { nx.tbox(_data); return; } // 判空 if (nx.dt.arrEmpty(_data.partner_bids)) { nx.warn("$Summon:空召唤跳过!"); return; } // 动画 nx.bridge.summonAnimation.doStart(); nx.bridge.summonAnimation.setResult(_data, args, function () { self.updateSummonData(); }); }); }, // 背包容量检查 checkVolume: function checkVolume(_count) { var HC = HeroController.getInstance(); var HM = HC.getModel(); // 背包容量判断 var bagInfo = HM.getHeroMaxCount(); var remains = bagInfo.max_count - bagInfo.have_coutn; return _count <= remains; }, // 点击上次结果 onTouchRecord: function onTouchRecord() { var _this3 = this; // 判空 if (nx.dt.objEmpty(this.data)) { return; } var SC = SummonMod.getInstance(); var self = this; var args = { op: "infinite", cb: function cb(_ret) { if (!_ret) { self.onTouchTen(); return; } nx.mbox("SummonInfinite", ['no', 'yes'], function (_key, _box) { _box.close(); if (_key == 'yes') { nx.bridge.summonAnimation.doStop(); SC.reqInfiniteConfirm(0, function (_ok, _data) { // 发送引导事件 if (nx.bridge.plot) { nx.bridge.plot.postKey("infinite_done"); } if (!_ok) { nx.tbox(_data); return; } self.onEnable(); }); } }); } }; nx.bridge.summonAnimation.jumpToFlipCards({ partner_bids: nx.bridge.vget("INFCurrent") }, args, function () { _this3.updateSummonData(); }); }, // ------------------------------------------------------ // 记录暂存 // ------------------------------------------------------ // 剩余次数 onRemainTimes: function onRemainTimes(_times) { var times = _times || 0; // if( times <= 0 ) { // this.labTimes.active = false; // return; // } // this.labTimes.active = true; var DATA = game.configs.infinite_ten_recruit_data; var max = DATA ? DATA.data_const.max_count.val : 0; nx.gui.setString(this.labTimes, "times", _times + "/" + max); }, // 打开暂存界面 onTouchSaveRecords: function onTouchSaveRecords() { nx.bridge.createPanel("WndSummonInfiniteRecord", { replace: false }); }, onTouchRecommend: function onTouchRecommend() { nx.bridge.createPanel("WndPopRecommend"); } }); cc._RF.pop();