| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import { _decorator, Component, Node } from 'cc';
- import { RewardVideoSystem } from '../ad/RewardVideoSystem';
- import { BattleData } from '../battle/BattleData';
- import { DataSystem } from '../core/data/DataSystem';
- import { Http } from '../core/net/Http';
- import { HttpSystem } from '../core/net/HttpSystem';
- import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
- import { WindowSystem } from '../core/ui/window/WindowSystem';
- import { ConfigData } from '../data/ConfigData';
- import { HttpErrorCode } from '../data/HttpErrorCode';
- import { platform } from '../data/jsb/platform';
- import { UserData } from '../data/UserData';
- import { NoviceGuideData } from '../guide/NoviceGuideData';
- import { ReportThinking } from '../ReportThinking';
- import { LevelBonusData } from './LevelBonusData';
- const { ccclass, property, requireComponent } = _decorator;
- @ccclass('LevelBonus')
- @requireComponent(Http)
- export class LevelBonus extends Component {
- private hadBonus = false;//当前关卡是否已经领取过红包
- private serverConfig;
- start() {
- this.serverConfig = DataSystem.getData(ConfigData).get("serverConfig");
- DataSystem.createData(LevelBonusData);
- this.initData();
- }
- //更新关卡红包数据
- private async initData() {
- let result = await this.node.getComponent(Http).send("/api/battle/getBonusTimes");
- if (result && result.code == 0) {
- DataSystem.getData(LevelBonusData).dailyTimes = result.data.dailyTimes;
- DataSystem.getData(LevelBonusData).saveTimes = result.data.times;
- DataSystem.getData(LevelBonusData).showSaveTimes = result.data.times;
- }
- }
- update() {
- DataSystem.watch(BattleData, "_monsterKilledNode") && this.produceBonus();
- }
- //红包产出
- private async produceBonus() {
- if (DataSystem.getData(LevelBonusData).dailyTimes == 0) {//今日次数不足
- return;
- }
- if (DataSystem.getData(LevelBonusData).saveTimes == this.serverConfig.saveLimit) {//红包数达到上线
- return;
- }
- let positionData = DataSystem.getData(BattleData)._monsterKilledNode;
- if (positionData.length) {
- if (!this.hadBonus && Math.random() * 10000 < this.serverConfig.redbagDrop) {
- // if (!this.hadBonus && Math.random() * 10000 > this.serverConfig.redbagDrop) {//測試
- let result = await this.node.getComponent(Http).send("/api/battle/receiveBonusTimes");
- if (result && result.code == 0) {
- DataSystem.getData(LevelBonusData).dailyTimes--;
- this.hadBonus = true;
- if (DataSystem.getData(NoviceGuideData).isShow) {
- DataSystem.getData(LevelBonusData).saveTimes++;
- WindowSystem.open("prefabs/ui/turntable/prizeFly", WindowOpenMode.NotCloseAndAdd, [{ type: 4, num: 1, position: positionData[positionData.length - 1] }]);
- } else {
- await WindowSystem.open("prefabs/ui/redEnvelopes", WindowOpenMode.NotCloseAndAdd, [{ type: 5, num: 0 }]);
- }
- }
- }
- } else {
- this.hadBonus = false;
- }
- }
- private isOpening = false;
- //视频广告
- private async openVideo() {
- if (this.isOpening) {
- return;
- }
- this.isOpening = true;
- if (DataSystem.getData(LevelBonusData).showSaveTimes > 0) {
- let result = await this.getComponent(Http).send("/api/ad/watchVideoAD");
- if (result && result.code == 0) {
- ReportThinking.ad_init('levelbonus_get');
- let adData = await RewardVideoSystem.show();
- if (adData) {//观看视频成功
- let _result = await this.getComponent(Http).send("/api/battle/receiveBonus", { adData: adData.obj });
- if (_result && _result.code == 0) {//打开红包成功
- ReportThinking.ad_end('levelbonus_get', _result.data);
- this.openRedBox(_result.data);
- } else if (_result && _result.code == HttpErrorCode.VideoADCD) {
- this.isOpening = false;
- WindowSystem.showTips('视频观看时间不足');
- }
- } else {//观看视频失败
- this.isOpening = false;
- WindowSystem.showTips('视频观看时间不足');
- }
- } else {//返回错误信息,无法观看视频
- this.isOpening = false;
- WindowSystem.showTips('视频次数不足');
- }
- } else {//次数不足
- this.isOpening = false;
- WindowSystem.showTips('挂机可以产生红包');
- }
- }
- //开红包
- private async openRedBox(num: number) {
- DataSystem.getData(LevelBonusData).saveTimes--;
- DataSystem.getData(LevelBonusData).showSaveTimes--;
- await WindowSystem.open("prefabs/ui/redEnvelopes", WindowOpenMode.NotCloseAndCover, [{ type: 0, num: num }]);
- this.scheduleOnce(() => {
- this.isOpening = false;
- }, 1);
- }
- }
|