Reward.ts 5.2 KB

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