RedBoxLv.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { _decorator, Component, Node, Sprite, Label } from 'cc';
  2. import { Http } from '../core/net/Http';
  3. import { OpenWindow } from '../core/ui/window/OpenWindow';
  4. import { WindowManager } from '../core/ui/window/WindowManager';
  5. import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
  6. import { ConfigData } from '../Data/ConfigData';
  7. import { g } from '../Data/g';
  8. import { LoginWaitWin } from './LoginWaitWin';
  9. import { NoviceWindow } from './NoviceWindow';
  10. const { ccclass, property } = _decorator;
  11. @ccclass('RedBoxLv')
  12. export class RedBoxLv extends Component {
  13. @property({ tooltip: "http服务", type: Http }) public http: Http;
  14. @property({ tooltip: "打开新窗口组件", type: OpenWindow }) public openNewWin: OpenWindow;
  15. @property({ tooltip: "用户名", type: Label }) public nameTxt: Label;
  16. @property({ tooltip: "新手手势", type: Sprite }) public handSprite: Sprite;
  17. public httpPath = "/api/lvRedPacket/GetLvRedPacketDiamond";//二级以上红包,获取可领取神石数值
  18. start() {
  19. g.gameData.isPlayVideo = false;
  20. this.nameTxt.string = g.userData.nickName;
  21. if (NoviceWindow.isNovicing) {
  22. this.handSprite.node.active = true;
  23. NoviceWindow.isOpenLvRedpacket = true;
  24. }
  25. }
  26. public isSend = false;
  27. /**
  28. * 打开红包方法
  29. */
  30. public async openRed() {
  31. // console.log(g.gameData.lvRedPacket);
  32. if (g.gameData.lvRedPacket == g.userData.lv) {
  33. WindowManager.showTips("无可领取红包");
  34. WindowManager.close();
  35. return;
  36. }
  37. if (g.gameData.isPlayVideo) {
  38. return;
  39. }
  40. g.gameData.isPlayVideo = true;
  41. if (g.gameData.lvRedPacket == 1) {
  42. this.httpPath = "";
  43. } else if (g.gameData.lvRedPacket < 1) {
  44. WindowManager.showTips("无可领取红包");
  45. WindowManager.close(this.node);
  46. g.gameData.isPlayVideo = false;
  47. return;
  48. }
  49. let data = [];
  50. if (this.httpPath == "") {//二级红包,无需看视频
  51. data[0] = ConfigData.configMap.get("systemConfig").twoLvRedPacketAddDiamond;
  52. data[1] = null;
  53. data[2] = 0;
  54. this.getRed(data);//播放红包动画
  55. } else {
  56. let data0 = await this.http.send("/api/ad/WatchVideoAD");
  57. switch (data0.code) {
  58. case 0:
  59. //播放视频
  60. let adData = await g.showRewardVideo();
  61. if (adData) {
  62. this.videoBack();
  63. } else {
  64. //视频观看失败
  65. WindowManager.showTips("视频观看时间不足");
  66. }
  67. break;
  68. case 108:
  69. WindowManager.showTips("今日视频次数已用完,请明日再继续");
  70. g.gameData.isPlayVideo = false;
  71. break;
  72. default:
  73. WindowManager.showTips("视频准备中,请稍后再试");
  74. // WindowManager.showTips(g.CodeMsg[data0.code]);
  75. g.gameData.isPlayVideo = false;
  76. WindowManager.close(this.node);
  77. break;
  78. }
  79. }
  80. }
  81. //视频结束回调
  82. public async videoBack() {
  83. let data = [];
  84. //#region 打开加载等待界面
  85. let _window = await WindowManager.open("Prefabs/Windows/加载等待窗口", WindowOpenMode.NotCloseAndCover);
  86. //#endregion
  87. let data0 = await this.http.send(this.httpPath, { adData: g.adData });
  88. _window.getComponent(LoginWaitWin).close();//关闭加载等待界面
  89. switch (data0.code) {
  90. case 0:
  91. data[0] = data0.data.addDiamond;
  92. data[1] = null;
  93. data[2] = 1;
  94. this.getRed(data);
  95. break;
  96. default:
  97. data0.code && WindowManager.showTips(g.CodeMsg[data0.code]);
  98. break;
  99. }
  100. WindowManager.close(this.node);
  101. }
  102. /**
  103. * 打开神石领取界面
  104. */
  105. public getRed(data: any[]) {
  106. this.openNewWin.open(data);
  107. }
  108. onDestroy() {
  109. g.gameData.isPlayVideo = false;
  110. }
  111. }