Sign.ts 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import JsbSystem from "../../../mk/system/JsbSystem";
  2. import TableView from "../../component/TableView";
  3. import { AdFun } from "../../data/AdData";
  4. import { DataEventId, GameProp, RewardType, VideoAdType } from "../../data/GameData";
  5. /**
  6. * 签到界面
  7. * - 每天第一次上线默认弹出一次【除首日】。待处理
  8. * - 全部签完后,不可再签到。此处需要判断上次签到天数。
  9. * - 滑动列表需要滚动到对应签到条目的高度,待处理。
  10. * @author 薛鸿潇
  11. */
  12. const { ccclass, property } = cc._decorator;
  13. @ccclass
  14. export default class Sign extends cc.Component {
  15. @property({ type: cc.ScrollView, displayName: '滚动视图' })
  16. private scroll_view: cc.ScrollView = null;
  17. @property({ type: cc.Animation, displayName: '按钮_动画' })
  18. private anim_btn: cc.Animation = null;
  19. @property({ type: cc.Label, displayName: '签到条件' })
  20. private lbl_condition: cc.Label = null;
  21. private tableview: TableView = null;
  22. private reward_data = null;
  23. private passLevel = 0;
  24. onLoad() {
  25. }
  26. start() {
  27. mk.ad.showNative(4);
  28. // gData.sign.sign_can = gData.gameData.getProp(GameProp.sign_can);
  29. gData.sign.initListData();
  30. gData.sign.init_data = true;
  31. this.initScollView();
  32. mk.ad.showInterAd(0);
  33. }
  34. /**
  35. * 初始化滚动视图
  36. */
  37. private initScollView() {
  38. let list_data = gData.sign.list_data;
  39. this.scroll_view.node.emit('srollview-init', list_data)
  40. this.tableview = this.scroll_view.node.getComponent('TableView')
  41. let index = gData.sign.getItemIndexByCanSign();
  42. this.scheduleOnce(() => {
  43. this.tableview.contentMoveByIndex(index)
  44. }, 0.1)
  45. this.reward_data = gData.sign.getTodayData();
  46. //通关条件
  47. this.passLevel = gData.gameData.getProp(GameProp.levelNum);
  48. this.lbl_condition.string = `通关达到${this.reward_data.levelNum}关(${this.passLevel}/${this.reward_data.levelNum})`;
  49. }
  50. update(dt) {
  51. if (gData.sign.init_data) {
  52. this.initBtnStyle();
  53. return;
  54. }
  55. if (gData.sign.adData) {
  56. // 展示奖励
  57. this.getReward();
  58. }
  59. }
  60. lateUpdate() {
  61. gData.sign.adData = null;
  62. }
  63. /**
  64. * 点击领取按钮
  65. */
  66. private clickReceiveReward() {
  67. mk.audio.playEffect("button");
  68. if (gData.gameData.gameData.isSignInToday == 1) return;
  69. if (!gData.sign.haveSignDay()) return;
  70. if (this.passLevel < this.reward_data.levelNum) {
  71. mk.tip.pop(`通关${this.reward_data.levelNum}后可领取`);
  72. return;
  73. }
  74. const index = gData.gameData.gameData.signInDay;
  75. if (gData.sign.c_sign[index].rewardType === RewardType.rmb) {
  76. if (!gData.loginData.isAuth) {
  77. JsbSystem.WxAuth();
  78. return;
  79. }
  80. }
  81. mk.ad.videoAdType = VideoAdType.Sign;
  82. // 看广告
  83. mk.ad.watchAd((success: boolean, request_id: string) => {
  84. mk.console.log("watchAD:" + success);
  85. if (success) {
  86. gData.adData.watchVideo(AdFun.sign, request_id);
  87. //FC:埋点
  88. // if (gData.sign.c_sign[index].rewardType === RewardType.rmb) {
  89. // mk.data.sendDataEvent(DataEventId.signWithDrawal, "签到提现成功");
  90. // }
  91. mk.data.sendDataEvent(DataEventId.Sign, `第${index}天签到`);
  92. mk.ad.destroyNativeAd();
  93. }
  94. });
  95. }
  96. /**
  97. * 拿奖励
  98. */
  99. private async getReward() {
  100. // 完成展示
  101. await gData.sign.signComplete();
  102. const index_old = gData.sign.getItemIndexByCanSign();
  103. // 指定条目数据刷新
  104. this.tableview.resetItemData(index_old, gData.sign.list_data[index_old]);
  105. }
  106. /**
  107. * 初始化按钮样式
  108. */
  109. private initBtnStyle() {
  110. if (gData.gameData.gameData.isSignInToday == 0 && gData.sign.haveSignDay()) {
  111. this.anim_btn.play();
  112. this.anim_btn.getComponent(mk.component.setGray).setGray(false)
  113. } else {
  114. this.anim_btn.stop();
  115. this.anim_btn.node.scale = 1;
  116. this.anim_btn.getComponent(mk.component.setGray).setGray(true)
  117. }
  118. gData.sign.init_data = false;
  119. }
  120. onClickClose() {
  121. mk.ad.destroyNativeAd();
  122. // mk.ad.checkShowInterByChance();
  123. }
  124. onDisable() {
  125. let showGuide = false;
  126. if (gData.sign.success) {
  127. gData.sign.success = false;
  128. gData.safeDepositBoxData.creatPacketAnim(2);
  129. gData.cashNormal.checkGuideBank();
  130. }
  131. if (!showGuide) {
  132. const isAutoOpenPanel = gData.gameData.getProp(GameProp.isAutoOpenPanel);
  133. if (isAutoOpenPanel === 1) {
  134. gData.guideToWxData.checkPop();
  135. gData.gameData.setProp(GameProp.isAutoOpenPanel, 2);
  136. }
  137. }
  138. }
  139. }