Reward.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import GamePlay from "../../../before/GamePlay";
  2. import { AdFun } from "../../data/AdData";
  3. import { BannerAdType, ExpAddType, GameProp, InterAdType, RewardType } from "../../data/GameData";
  4. const { ccclass, property } = cc._decorator;
  5. /**
  6. * 盖子类型
  7. */
  8. enum LidType {
  9. /** 无盖子 */
  10. none = 0,
  11. /** 幸运红包盖子 */
  12. luck = 1,
  13. /** 通关红包盖子 */
  14. mission = 2
  15. }
  16. /**
  17. * 获取奖励界面-红包
  18. * @author 薛鸿潇
  19. */
  20. @ccclass
  21. export default class Reward extends cc.Component {
  22. //新红包界面展示
  23. @property({ displayName: '新红包节点', type: cc.Node })
  24. private node_newRedBag: cc.Node = null;
  25. @property({ displayName: '新红包奖励数量', type: cc.Label })
  26. private lbl_reward_num: cc.Label = null;
  27. @property({ displayName: '红包节点', type: cc.Sprite })
  28. private node_hb: cc.Sprite = null;
  29. @property({ displayName: '描述', type: cc.Label })
  30. private lbl_des: cc.Label = null;
  31. /** 当前阶段 */
  32. private cur_stage: number = LidType.none;
  33. onLoad() {
  34. this.lbl_reward_num.string = 'x0';
  35. // gData.reward.data = [{ rewardType: 3, rewardNum: 100 }]// 测试数据
  36. this.watchVideoCall();
  37. }
  38. start() {
  39. mk.audio.playEffect("congratulations");
  40. }
  41. onEnable() {
  42. //gData.adData.checkPopInter(InterAdType.interstitial1_click_2);
  43. mk.ad.showNative();
  44. gData.gameData.popTableScreenADLogic(1);
  45. mk.ad.showBanner(BannerAdType.banner_click_1);
  46. }
  47. onDisable() {
  48. // mk.ad.destoryBanner();
  49. mk.ad.destroyNativeAd();
  50. }
  51. lateUpdate() {
  52. gData.reward.add_redbag_value = 0;
  53. }
  54. /**
  55. * 看广告回调:开奖
  56. */
  57. private async watchVideoCall() {
  58. if (gData.adData.curRedBagAdFun == AdFun.bubble) {
  59. gData.adData.curSelQipao.active = false;
  60. }
  61. else if (gData.adData.curRedBagAdFun == AdFun.settlement) {
  62. GamePlay.Inst.nextLevel();
  63. }
  64. if (gData.reward.adData) {
  65. // 气泡视频奖励 通关视频奖励
  66. // gData.reward.adData.videoRedMoney.videoRewardList = [{ rewardType: 3, rewardNum: 1000 }, { rewardType: 1, rewardNum: 1000 }]// 测试数据
  67. gData.reward.data = gData.reward.adData.videoRedMoney.videoRewardList;
  68. gData.reward.adData = null;
  69. }
  70. if (!gData.reward.data || !gData.reward.data.length) return;
  71. this.cur_stage = LidType.none;
  72. // 数据排序:多条奖励,只展示红包,把红包放在首位
  73. const r_count = gData.reward.data.length;
  74. if (r_count >= 2) {
  75. for (let i = 0; i < r_count; i++) {
  76. if (gData.reward.data[i].rewardType === RewardType.redBag) {
  77. let new_data = gData.reward.data.splice(i, 1);
  78. gData.reward.data.unshift(new_data[0]);
  79. break;
  80. }
  81. }
  82. }
  83. // 图标展示
  84. this.node_hb.spriteFrame = await mk.loader.load('game/texture/coin/' + gData.reward.data[0].rewardType, cc.SpriteFrame);
  85. if (gData.reward.data[0].rewardType === RewardType.productTimes) {
  86. this.node_hb.node.scale = 0.5;
  87. } else {
  88. this.node_hb.node.scale = 1;
  89. }
  90. let rewardNum: number = gData.reward.data[0].rewardNum || 0;
  91. if (gData.reward.data[0].rewardType === RewardType.pigRmb) {
  92. } else {
  93. if (gData.reward.data[0].rewardType != RewardType.productTimes) {
  94. rewardNum = Math.round(rewardNum / 100);
  95. this.lbl_des.string = '红包币'
  96. } else {
  97. this.lbl_des.string = '生产次数'
  98. }
  99. this.lbl_reward_num.string = `+${rewardNum}`;
  100. }
  101. // 底部进度动画
  102. if (gData.reward.data[0].rewardType === RewardType.redBag) {
  103. gData.reward.add_redbag_value = gData.reward.data[0].rewardNum;
  104. }
  105. }
  106. /**
  107. * 点击获得奖励
  108. */
  109. private clickGetReward() {
  110. // cc.log('获取奖励:', gData.reward.data);
  111. // if (gData.reward.data[0].rewardType == RewardType.productTimes) {
  112. // let com = gData.gameData.playerProp.userFarmTaskInfo.completeCount;
  113. // let count = gData.gameData.playerProp.userFarmTaskInfo.taskCount;
  114. // let curDes = `<color=8A4312>继续生产,还有<color=ff0000>${count - com}次</color>即可\n提现<color=ff0000>!</color></color>`;
  115. // mk.guide.open(3, curDes);
  116. // }
  117. let world_Pos = this.node_hb.node.parent.convertToWorldSpaceAR(this.node_hb.node.getPosition());
  118. gData.reward.flyCoinAnim(world_Pos);
  119. if (gData.reward.callback) {
  120. gData.reward.callback();
  121. gData.reward.callback = null;
  122. }
  123. else {
  124. gData.farmGradeData.addGradeExp(ExpAddType.EAT_others, world_Pos);
  125. }
  126. this.onClickClose();
  127. }
  128. /**
  129. * 提现操作
  130. */
  131. private clickCashOut() {
  132. gData.reward.addReward();
  133. mk.ui.closePanel(this.node.name);
  134. let path = 'module/redBagCash/redBagCash';
  135. mk.ui.openPanel(path);
  136. }
  137. onDestroy() {
  138. if (this.cur_stage === LidType.none) {
  139. mk.audio.playEffect("button");
  140. }
  141. if (gData.reward.closeUICallBack) {
  142. gData.reward.closeUICallBack();
  143. gData.reward.closeUICallBack = null;
  144. }
  145. }
  146. onClickClose() {
  147. // mk.ad.destoryBanner();
  148. }
  149. }