"use strict"; cc._RF.push(module, 'eb69c5XjKlH5JhXEA1+bR/R', 'cmp.payment.item'); // Scripts/mod/payment/cmp/cmp.payment.item.js "use strict"; /****************************************************************** * Copyright(C) 2019 - 2020 Nx Studio * * 通用支付项 * * 2024.01.24 ******************************************************************/ var SVCItem = require("nx.fx.sv.expand.item"); var Payment = require("payment.mod"); // 价格标记 var PFS = { TimeLimit: 2, // 次数上限 TimeCurrent: 6, // 已购买次数 PriceRaw: 26, // 原价 PriceDisInfo: 25, // 折扣信息 PriceDiscount: 27, // 折后价 SortRight: 39 // 排序 }; cc.Class({ "extends": SVCItem, properties: { // 基本信息 fabItem: { "default": null, type: cc.Prefab }, nodGoods: { "default": null, type: cc.Node }, nodName: { "default": null, type: cc.Node }, nodReaminTimes: { "default": null, type: cc.Node }, // 价格 nodRMB: { "default": null, type: cc.Node }, nodDiamond: { "default": null, type: cc.Node }, // 具体操作 nodBuy: { "default": null, type: cc.Node }, nodDone: { "default": null, type: cc.Node }, // 回调 doneEvent: { "default": [], type: cc.Component.EventHandler, displayName: "购买回调" } }, // 数据重置 rebind: function rebind(_idx, _data, _key) { this._super(_idx, _data, _key); this.setData(_data); }, // 设置 setData: function setData(_data) { this.mdata = nx.dt.objClone(_data); // 名字刷新 if (this.nodName) { var name = nx.text.getKey(_data.aim_str); nx.gui.setString(this.nodName, "", name); } // 商品刷新 if (this.nodGoods && this.fabItem) { var items = _data.item_list || []; if (nx.dt.arrEmpty(items)) { this.nodGoods.active = false; } else { this.nodGoods.active = true; for (var i = 0; i < this.nodGoods.children.length; ++i) { var info = items[i]; var node = this.nodGoods.children[i]; if (nx.dt.objEmpty(info)) { node.active = false; continue; } node.active = true; if (node.children.length == 0) { var item = cc.instantiate(this.fabItem); item.parent = node; item.position = cc.v2(0, 0); } var cmp = node.children[0].getComponent("cmp.item.base"); cmp.setData(info.bid, info.num); } } } // 数据统计 this.infos = {}; for (var _i = 0; _i < _data.aim_args.length; ++_i) { var tmp = _data.aim_args[_i]; if (!tmp) { continue; } switch (tmp.aim_args_key) { case PFS.TimeLimit: { this.infos.maxTimes = tmp.aim_args_val; } break; case PFS.TimeCurrent: { this.infos.curTimes = tmp.aim_args_val; } break; case PFS.PriceRaw: { this.infos.price = tmp.aim_args_val; } break; case PFS.PriceDisInfo: { this.infos.disinfo = tmp.aim_args_val; } break; case PFS.PriceDiscount: { this.infos.disprice = tmp.aim_args_val; } break; case PFS.SortRight: { this.infos.sort = tmp.aim_args_val; } break; default: break; } ; } // 价格刷新 if (this.nodRMB || this.nodDiamond) { var price = this.infos.disprice || this.infos.price || 0; if (_data.aim == 0) { nx.gui.setActive(this.nodRMB, "", false); nx.gui.setActive(this.nodDiamond, "", true); nx.gui.setString(this.nodDiamond, "txt", price); } else { nx.gui.setActive(this.nodRMB, "", true); nx.gui.setActive(this.nodDiamond, "", false); var txt = Payment.getInstance().fmtPrice(price); nx.gui.setString(this.nodRMB, "txt", txt); } } // 变数刷新 this.freshInfos(); }, // 变数刷新 freshInfos: function freshInfos() { // 次数刷新 var times = this.infos.maxTimes - this.infos.curTimes || 0; if (this.nodReaminTimes) { nx.gui.setString(this.nodReaminTimes, "", times); } // 操作刷新 nx.gui.setActive(this.nodBuy, "", times > 0); nx.gui.setActive(this.nodDone, "", times <= 0); }, // 点击购买 onTouchBuy: function onTouchBuy() { var _this = this; if (!this.mdata || !this.infos) { return; } var self = this; var done = function done() { self.infos.curTimes += 1; self.freshInfos(); }; // 如果aim=0则为钻石购买,直接抛出 if (this.mdata.aim == 0) { this.doneEvent.forEach(function (_event) { if (_event && _event.customEventData === "") { _event.customEventData = { diamond: true, data: _this.mdata, cb: function cb() { done(); } }; } }); cc.Component.EventHandler.emitEvents(this.doneEvent); return; } // 支付 Payment.getInstance().reqPayment(this.mdata.aim, function (_ret) { if (_ret && nx.dt.arrNEmpty(_this.doneEvent)) { done(); cc.Component.EventHandler.emitEvents(_this.doneEvent); } }); } }); cc._RF.pop();