Files
fc/dev/project/library/imports/40/40093d10-973c-4628-87bf-1bfde179c0f5.js
T

277 lines
8.9 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '400930QlzxGKIe/G/3hecD1', 'cmp.act.treasure');
// Scripts/mod/acts/treasure/cmp/cmp.act.treasure.js
"use strict";
var BasePage = require("act.page.base");
var BackPackController = require("backpack_controller");
var TipsController = require("tips_controller");
var XSpine = require("nx.fx.spine");
var FID = require("bridge.function.ids");
/***
*
* 探宝活动
*/
cc.Class({
"extends": BasePage,
properties: {
nodReward: {
"default": null,
type: cc.Node
},
nodPeriod: {
"default": null,
type: cc.Node,
displayName: "轮次显示"
},
nodMat: {
"default": null,
type: cc.Node,
displayName: "材料显示"
},
nodItem: {
"default": null,
type: cc.Node
},
nodFocus: {
"default": null,
type: cc.Node
},
nodChange: {
"default": null,
type: XSpine
}
},
// 初始化
build: function build(_data) {
this._super(_data);
var chd = this.nodReward.children;
for (var i = 0; i < chd.length; i++) {
var nod = chd[i];
var item = nx.gui.find(nod, "item");
var nodItem = cc.instantiate(this.nodItem);
nodItem.parent = item;
nx.gui.setActive(nod, "focus", false);
}
this.effect = nx.gui.getComponent(this.nodFocus, "", "nx.fx.spine");
this.mod.vbind(this, [["treasureInfo", this.freshTreasureInfo.bind(this)], ["treasurePeriodChange", this.freshTreasurePeriod.bind(this)]]);
// this.mod.reqDailyFChargeData();
},
// 销毁
onDestroy: function onDestroy() {
// 活动监听解除
if (this.mod) {
this.mod.vunbind(this);
}
this._super();
},
onEnable: function onEnable() {
this.mod.reqTreasureData();
// this.mod.freshTips();
},
freshTreasurePeriod: function freshTreasurePeriod(_data) {
var _this = this;
if (!_data || nx.dt.objEmpty(_data)) {
return;
}
if (this.tween) {
this.tween.stop();
}
this.nodChange.load("resDB/effects/E80044/action", function (_e) {
if (!_e) {
_this.nodChange.action("action", false);
} else {
_this.nodChange.stop();
}
});
var period = _data.period;
var datac = nx.dt.objClone(this.mod.vget("treasureInfo"));
datac.period = period;
datac.reward_list = [];
this.freshTreasureInfo(datac);
},
freshTreasureInfo: function freshTreasureInfo(_data) {
if (!_data || nx.dt.objEmpty(_data)) {
return;
}
this.index = 0; //当前光环在哪个奖品上
this.nodFocus.position = this.nodReward.children[this.index].position; //初始化光环位置
this.delayTime = 0.3; //开始的时候延迟调用的时间(最小时间间隔)
this.delayTime_max = 1.5; //最大时间间隔
this.addOrSub = false; //增加还是减少的bool值
this.loopCount = 0; //循环次数
this.circleCount = 2; //前面循环的圈数(效果圈,只为效果,和奖品无关)
var setGray = function setGray(_nod, _mat) {
var nod = _nod;
var sp = nx.gui.getComponent(nod, "qa", cc.Sprite);
var isp = nx.gui.getComponent(nod, "icon", cc.Sprite);
var ssp = nx.gui.getComponent(nod, "star", cc.Sprite);
var rt = nx.gui.getComponent(nod, "rt/img", cc.Sprite);
var material = _mat == 1 ? cc.Material.getBuiltinMaterial('2d-gray-sprite') : cc.Material.getBuiltinMaterial('2d-sprite');
sp.setMaterial(0, material);
isp.setMaterial(0, material);
ssp.setMaterial(0, material);
rt.setMaterial(0, material);
};
var BC = BackPackController.getInstance();
var period = _data.period;
this.period = period;
var cfgs = gdata(this.data.config, "data_richanghuodong");
var cfg = cfgs[period];
var chd = this.nodReward.children;
var mat = gdata(this.data.config, "data_constant").prize_item.val[0];
// this.have = BC.getModel().getItemNumByBid( mat );
this.have = _data.num;
for (var i = 0; i < chd.length; i++) {
var nod = chd[i];
var ifg = cfg[i + 1 + (period - 1) * 14];
var item = nx.gui.find(nod, "item");
var nodd = nx.gui.find(item, "award");
nx.gui.setActive(nod, "focus", false);
setGray(nodd, 0);
var cmp = nx.gui.getComponent(item, "award", "cmp.item.base");
if (cmp) {
cmp.setData(ifg.items[0]);
}
}
if (nx.dt.arrNEmpty(_data.reward_list)) {
for (var _i = 0; _i < _data.reward_list.length; _i++) {
var award = _data.reward_list[_i];
var _nod2 = nx.gui.find(chd[award.id - (period - 1) * 14 - 1]);
nx.gui.setActive(_nod2, "focus", true);
// nx.gui.setActive( nod, "focus", false );
if (_nod2) {
var _item = nx.gui.find(_nod2, "item");
var _nodd = nx.gui.find(_item, "award");
setGray(_nodd, 1);
}
}
}
nx.tween.fadeOut(this.nodFocus, "", 0.01);
nx.gui.setString(this.nodPeriod, "txt", nx.text.format("TreasurePeriod", period));
nx.gui.setString(this.nodMat, "count/txt", nx.dt.shortCount(_data.num));
var tip1 = nx.gui.getComponent(this, "panel/op/charge/tip", "nx.vb.visible");
if (tip1) {
tip1.setTarget(nx.mTip, this.mod.getTipKey("rewarddd"));
}
// let time = Math.floor( Math.random() * this.nodReward.children.length );
// this.onDoing = false;
// // this.onDoAni( time, 0 );
},
// 播放輪轉動畫
onDoAni: function onDoAni(_time, _result, _loop) {
var _this2 = this;
this.loopCount = _loop >= 0 ? _loop : this.loopCount;
this.nodFocus.opacity = 156;
this.unscheduleAllCallbacks();
this.effect.load("resDB/effects/E80043/action", function (_e) {
if (!_e) {
_this2.effect.action("action2", true);
} else {
_this2.effect.stop();
}
});
this.scheduleOnce(function () {
_this2.index++;
//循环到最后一个值之后从0开始
if (_this2.index >= _this2.nodReward.children.length) {
_this2.index = 0;
}
if (_result > 0) {
_this2.delayTime = 0.05;
_this2.onDoing = true;
}
//当前运行次数++
if (_this2.loopCount >= _this2.nodReward.children.length * _this2.circleCount && _result > 0) {
//加速度,为最大时间间隔/空转之外需要运行的间隔(空转之外需要运行的间隔是一圈+抽奖的结果)
_this2.delayTime = 0.2;
}
_this2.loopCount++;
//总的运行次数 = 空转三圈 + 一圈缓冲 + 抽奖结果
_this2.count = _this2.nodReward.children.length * (_this2.circleCount + 1) + _time;
//判断是不是运行完了
// console.log( this.loopCount + "當前的總數" + this.count + "ssss" + _result );
if (_this2.loopCount >= _this2.count && _result > 0) {
//隐藏遮罩
_this2.nodFocus.position = _this2.nodReward.children[_result - 1].position;
_this2.effect.load("resDB/effects/E80043/action", function (_e) {
if (!_e) {
_this2.effect.action("action", true);
nx.audio.playSFX("audios/effects/praycell");
} else {
_this2.effect.stop();
}
});
_this2.tween = cc.tween(_this2.nodFocus).delay(1.5).call(function () {
_this2.mod.reqGetTreasure(1);
// this.mod.freshTips();
_this2.onDoing = false;
}).start();
return;
} else {
//切换光环位置
_this2.nodFocus.position = _this2.nodReward.children[_this2.index].position;
//重新调用本方法(因为schedule不能动态修改运行间隔时间)
nx.audio.playSFX("audios/effects/praycell");
_this2.onDoAni(_time, _result, _this2.loopCount);
}
}, this.delayTime, 0); //执行次数为0,实际执行次数为1
},
onTouchTreasure: function onTouchTreasure() {
var _this3 = this;
if (this.have == 0) {
var tip = nx.text.getKey("SummonTimesNotEnough") + "," + nx.text.getKey("GotoCharge");
nx.mbox(tip, ["Cancle", "GotoCharge"], function (_key, _box) {
_box.close();
if (_key == 'GotoCharge') {
nx.bridge.createPanel("WndPayment", {
key: "recharge"
});
}
});
return;
}
// 正在播動畫
if (this.onDoing) {
nx.tbox("TreasureDoing");
return;
}
this.mod.reqGetTreasure(0, function (_ret, _data) {
if (!_ret) {
nx.tbox(_data);
return;
}
// 本地道具-1
nx.gui.setString(_this3.nodMat, "count/txt", nx.dt.shortCount(_this3.have - 1));
// 过程模拟
var num = -_this3.nodReward.children.length;
nx.tween.fadeIn(_this3.nodFocus, "", 0.1);
_this3.onDoAni(num / 3, _data.reward_id - (_this3.period - 1) * 14, 0);
});
},
onTouchHelp: function onTouchHelp() {
var TC = TipsController.getInstance();
if (TC) {
var txt = gdata(this.data.config, "data_rule")[1];
TC.showTextPanel(txt.name, nx.text.getKey(txt.content));
}
}
});
cc._RF.pop();