Files
fc/dev/project/library/imports/80/80f2b19e-efbb-40ce-8494-d6467f142234.js
T
2026-05-24 10:21:26 +08:00

281 lines
7.0 KiB
JavaScript

"use strict";
cc._RF.push(module, '80f2bGe77tAzoSU1kZ/FCI0', 'cmp.act.limit.item');
// Scripts/mod/acts/limitShop/cmp/cmp.act.limit.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 TipsController = require("tips_controller");
// 价格标记
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, _bgRes) {
this.mdata = nx.dt.objClone(_data);
// 背景刷新
if (nx.dt.strNEmpty(_bgRes)) {
var path = cc.path.join("prefab/acts/limitShop/ui", _bgRes);
nx.gui.setSpriteFrame(this, "", path);
}
// 名字刷新
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.autoLayout();
}
// 数据统计
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) {
var TC = TipsController.getInstance();
if (TC) {
var item = {
item_bid: this.mdata.item_list[0].bid,
has_buy: this.infos.curTimes,
discount: 0,
price: this.infos.disprice || this.infos.price || 0,
limit_count: this.infos.maxTimes,
pay_type: 3
};
TC.openBuyPanel(true, item, 28, function (_data) {
self.doneEvent.forEach(function (_event) {
if (_event && _event.customEventData === "" || _event.customEventData) {
_event.customEventData = {
diamond: true,
data: self.mdata,
num: _data.num,
cb: function cb() {
self.infos.curTimes += _data.num;
self.freshInfos();
}
};
}
});
TC.openBuyPanel(false);
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);
}
});
},
// 自动布局
autoLayout: function autoLayout() {
var shows = [];
for (var i = 0; i < this.nodGoods.children.length; ++i) {
var node = this.nodGoods.children[i];
if (node && node.active) {
shows.push(node);
}
}
if (shows.length <= 0) {
return;
}
var POS = [[[0, 0]], [[-60, 0], [60, 0]], [[0, 56], [-60, -55], [60, -55]], [[-60, 56], [60, 56], [-60, -55], [60, -55]]];
var poses = POS[shows.length - 1];
if (!poses) {
return;
}
for (var _i2 = 0; _i2 < shows.length; ++_i2) {
var pos = poses[_i2];
var _node = shows[_i2];
_node.position = cc.v2(pos[0], pos[1]);
}
}
});
cc._RF.pop();