Reward.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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.gameData.popTableScreenADLogic(1);
  42. mk.ad.showBanner(BannerAdType.banner_click_1);
  43. }
  44. onDisable() {
  45. mk.ad.destoryBanner();
  46. }
  47. lateUpdate() {
  48. gData.reward.add_redbag_value = 0;
  49. gData.reward.adData = null;
  50. }
  51. /**
  52. * 看广告回调:开奖
  53. */
  54. private async watchVideoCall() {
  55. if (gData.reward.adData) {
  56. // 气泡视频奖励 通关视频奖励
  57. // gData.reward.adData.videoRedMoney.videoRewardList = [{ rewardType: 3, rewardNum: 1000 }, { rewardType: 1, rewardNum: 1000 }]// 测试数据
  58. gData.reward.data = gData.reward.adData.videoRedMoney.videoRewardList;
  59. }
  60. if (!gData.reward.data || !gData.reward.data.length) return;
  61. this.cur_stage = LidType.none;
  62. // 数据排序:多条奖励,只展示红包,把红包放在首位
  63. const r_count = gData.reward.data.length;
  64. if (r_count >= 2) {
  65. for (let i = 0; i < r_count; i++) {
  66. if (gData.reward.data[i].rewardType === RewardType.redBag) {
  67. let new_data = gData.reward.data.splice(i, 1);
  68. gData.reward.data.unshift(new_data[0]);
  69. break;
  70. }
  71. }
  72. }
  73. // 图标展示
  74. this.node_hb.spriteFrame = await mk.loader.load('game/texture/coin/' + gData.reward.data[0].rewardType, cc.SpriteFrame);
  75. if (gData.reward.data[0].rewardType === RewardType.productTimes) {
  76. this.node_hb.node.scale = 0.5;
  77. } else {
  78. this.node_hb.node.scale = 1;
  79. }
  80. let rewardNum: number = gData.reward.data[0].rewardNum || 0;
  81. if (gData.reward.data[0].rewardType === RewardType.pigRmb) {
  82. } else {
  83. if (gData.reward.data[0].rewardType != RewardType.productTimes) {
  84. rewardNum = Math.round(rewardNum / 100);
  85. this.lbl_des.string = '红包币'
  86. } else {
  87. this.lbl_des.string = '生产次数'
  88. }
  89. this.lbl_reward_num.string = `+${rewardNum}`;
  90. }
  91. // 底部进度动画
  92. if (gData.reward.data[0].rewardType === RewardType.redBag) {
  93. gData.reward.add_redbag_value = gData.reward.data[0].rewardNum;
  94. }
  95. }
  96. /**
  97. * 点击获得奖励
  98. */
  99. private clickGetReward() {
  100. // cc.log('获取奖励:', gData.reward.data);
  101. // if (gData.reward.data[0].rewardType == RewardType.productTimes) {
  102. // let com = gData.gameData.playerProp.userFarmTaskInfo.completeCount;
  103. // let count = gData.gameData.playerProp.userFarmTaskInfo.taskCount;
  104. // let curDes = `<color=8A4312>继续生产,还有<color=ff0000>${count - com}次</color>即可\n提现<color=ff0000>!</color></color>`;
  105. // mk.guide.open(3, curDes);
  106. // }
  107. let world_Pos = this.node_hb.node.parent.convertToWorldSpaceAR(this.node_hb.node.getPosition());
  108. gData.reward.flyCoinAnim(world_Pos);
  109. if (gData.reward.callback) {
  110. gData.reward.callback();
  111. gData.reward.callback = null;
  112. }
  113. else {
  114. gData.farmGradeData.addGradeExp(ExpAddType.EAT_others, world_Pos);
  115. }
  116. this.onClickClose();
  117. }
  118. /**
  119. * 提现操作
  120. */
  121. private clickCashOut() {
  122. gData.reward.addReward();
  123. mk.ui.closePanel(this.node.name);
  124. let path = 'module/redBagCash/redBagCash';
  125. mk.ui.openPanel(path);
  126. }
  127. onDestroy() {
  128. if (this.cur_stage === LidType.none) {
  129. mk.audio.playEffect("button");
  130. }
  131. if(gData.reward.closeUICallBack){
  132. gData.reward.closeUICallBack();
  133. gData.reward.closeUICallBack = null;
  134. }
  135. }
  136. onClickClose() {
  137. mk.ad.destoryBanner();
  138. }
  139. }