sign_view.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import { _decorator, Color, Component, Label, Node, Sprite, SpriteFrame } from 'cc';
  2. import { base_ui } from '../../fw/base_ui';
  3. import { http } from '../../http';
  4. import { config } from '../../config';
  5. import { sign_reward } from './sign_reward';
  6. import { sign_total_reward } from './sign_total_reward';
  7. import { sign_reward_data, sign_total_reward_data } from '../../data';
  8. import { sign_receive_reward } from './sign_receive_reward';
  9. import { GameManager } from '../../GameManager';
  10. import { ClientEvent } from '../../lib/clientEvent';
  11. import { tools } from '../../tools';
  12. import { uiManager } from '../../manager/uiManager';
  13. import { userDataManager } from '../../manager/userDataManager';
  14. const { ccclass, property } = _decorator;
  15. @ccclass('sign_view')
  16. export class sign_view extends base_ui {
  17. @property(Node) public_bg:Node = null
  18. @property(Node) reward_node:Node = null
  19. @property(Node) total_reward_node:Node = null
  20. @property(Node) btn_sign:Node = null
  21. @property(Node) lab_sign:Node = null
  22. @property(SpriteFrame) sf_btn_sign_qd:SpriteFrame = null // 签到
  23. @property(SpriteFrame) sf_btn_sign_yqd:SpriteFrame = null // 已签到
  24. @property(Node) receive_reward:Node = null
  25. private m_today_data:sign_reward_data = null
  26. start() {
  27. this.onButtonListen(this.public_bg, ()=>{
  28. this.close()
  29. })
  30. this.onButtonListen(this.btn_sign, ()=>{
  31. this.requestUserSign()
  32. })
  33. this.btn_sign.active = false
  34. GameManager.requestDelay(()=>{
  35. this.requestSignListData(null,true)
  36. })
  37. }
  38. private requestSignListData(cb=null, show_loading:boolean=false) {
  39. if(show_loading){ uiManager.Instance().showLoading() }
  40. http.post(config.API.sign_list,null,(err,d)=>{
  41. if(show_loading){
  42. setTimeout(()=>{ uiManager.Instance().hideLoading() },250)
  43. }
  44. if(!err){
  45. let nd = JSON.parse(d)
  46. if(nd.code === config.status.SUCCESS){
  47. // console.log("sign_list", nd.content)
  48. let total_sign_number = nd.content.total_sign_number
  49. this.reward_node.getComponent(sign_reward).initView(nd.content.sign_reward_list,this.onRewardCallBack.bind(this),this.onClickRewardItem.bind(this))
  50. this.total_reward_node.getComponent(sign_total_reward).initView(total_sign_number, nd.content.sign_total_reward_list,this.onClickTotalRewardItem.bind(this))
  51. cb && cb(nd.content)
  52. }
  53. }
  54. },'GET')
  55. }
  56. private onRewardCallBack(today_data:sign_reward_data) {
  57. this.m_today_data = today_data
  58. if(today_data.receive_status==0) {
  59. this.btn_sign.getComponent(Sprite).spriteFrame = this.sf_btn_sign_qd
  60. this.lab_sign.getComponent(Label).color = new Color().fromHEX("#A3511B")
  61. this.lab_sign.getComponent(Label).string = '签 到'
  62. } else {
  63. this.btn_sign.getComponent(Sprite).spriteFrame = this.sf_btn_sign_yqd
  64. this.lab_sign.getComponent(Label).color = new Color().fromHEX("#464646")
  65. this.lab_sign.getComponent(Label).string = '今日已签到'
  66. }
  67. this.btn_sign.active = true
  68. }
  69. private onClickRewardItem(data:sign_reward_data,is_buqian:boolean) {
  70. let call_back = ((is_buqian:boolean)=>{
  71. this.showReceiveReward(data,is_buqian)
  72. })
  73. if(is_buqian) {
  74. GameManager.showVideoAd(config.ADS_TYPE.GAME_SIGN_BUQIAN, (res)=>{
  75. call_back(true)
  76. })
  77. } else {
  78. call_back(false)
  79. }
  80. }
  81. private onClickTotalRewardItem(data:sign_total_reward_data) {
  82. this.receive_reward.active = true
  83. this.receive_reward.getComponent(sign_receive_reward).initReceiveSuccess(data)
  84. this.requestSignListData((data)=>{
  85. this.checkSignAll(data)
  86. })
  87. }
  88. private requestUserSign() {
  89. if(this.m_today_data.receive_status==1) {
  90. return
  91. }
  92. this.showReceiveReward(this.m_today_data)
  93. }
  94. private showReceiveReward(data:sign_reward_data, is_buqian:boolean=false) {
  95. this.receive_reward.active = true
  96. this.receive_reward.getComponent(sign_receive_reward).initView(data, is_buqian, (v:sign_receive_reward)=>{
  97. this.requestSignListData((data)=>{
  98. this.checkSignAll(data)
  99. })
  100. })
  101. }
  102. private checkSignAll(data) {
  103. let reward_list:sign_reward_data[] = data.sign_reward_list
  104. let is_sign_all = true
  105. for (let index = 0; index < reward_list.length; index++) {
  106. const element = reward_list[index];
  107. if(element.current_sign_status==0&&element.repair_sign_status==1) {
  108. is_sign_all = false
  109. break
  110. }
  111. if(element.current_sign_status==1&&element.receive_status==0) {
  112. is_sign_all = false
  113. break
  114. }
  115. }
  116. if(is_sign_all) {
  117. let total_reward_list:sign_total_reward_data[] = data.sign_total_reward_list
  118. for (let index = 0; index < total_reward_list.length; index++) {
  119. const element = total_reward_list[index];
  120. if(element.is_receive_status==1&&element.receive_status==0) {
  121. is_sign_all = false
  122. break
  123. }
  124. }
  125. }
  126. if(is_sign_all) {
  127. userDataManager.user_red_dot_data.sign_red_dot = 0
  128. ClientEvent.dispatchEvent(config.UI_EVENT.UPDATE_RED_DOT_STATUS,config.RED_DOT_TYPE.sign)
  129. }
  130. }
  131. }