BTRechargeRewardDataMgr.lua 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. local BTRechargeRewardDataMgr = class('BTRechargeRewardDataMgr', require('DataBase'))
  2. function BTRechargeRewardDataMgr:ctor()
  3. self.firstRechargeRewardState = 0
  4. self.hundredRechargeUnlockState = false
  5. self.hundredRechargeRewardMaxDay = 0
  6. self.hundredRechargeRewardCurDay = 0
  7. self.btTotalRecharge = 0
  8. end
  9. function BTRechargeRewardDataMgr:Clear()
  10. self.firstRechargeRewardState = 0
  11. self.hundredRechargeUnlockState = false
  12. self.hundredRechargeRewardMaxDay = 0
  13. self.hundredRechargeRewardCurDay = 0
  14. self.btTotalRecharge = 0
  15. end
  16. function BTRechargeRewardDataMgr:Destroy()
  17. self.firstRechargeRewardState = nil
  18. self.hundredRechargeUnlockState = nil
  19. self.hundredRechargeRewardMaxDay = nil
  20. self.hundredRechargeRewardCurDay = nil
  21. self.btTotalRecharge = nil
  22. self:UnRegisterNetEvents()
  23. end
  24. function BTRechargeRewardDataMgr:RegisterNetEvents()
  25. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF, self.OnBTFirstRechargeNtf, self)
  26. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_FIRST_RECHARGE_REWARD_ACK, self.OnBTFirstRechargeRewardAck, self)
  27. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_RECHARGE100_NTF, self.OnBTHundredRechargeNtf, self)
  28. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_RECHARGE100_REWARD_ACK, self.OnBTHundredRechargeRewardAck, self)
  29. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PAY_INFO_NTF, self.OnPayInfoNtf, self)
  30. end
  31. function BTRechargeRewardDataMgr:UnRegisterNetEvents()
  32. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF)
  33. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_REWARD_ACK)
  34. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_RECHARGE100_NTF)
  35. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_RECHARGE100_REWARD_ACK)
  36. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF)
  37. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_PAY_INFO_NTF, self.OnPayInfoNtf, self)
  38. end
  39. function BTRechargeRewardDataMgr:OnBTFirstRechargeNtf(data)
  40. if not data.first_recharge_time or data.first_recharge_time <= 0 then
  41. return
  42. end
  43. local firstRechargeRewardState = self.firstRechargeRewardState
  44. self.firstRechargeRewardState = data.first_recharge_reward_state or 0
  45. if self.firstRechargeRewardState ~= firstRechargeRewardState then
  46. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
  47. self:CheckFirstRechargeRedPoint()
  48. end
  49. end
  50. function BTRechargeRewardDataMgr:OnBTFirstRechargeRewardAck(data)
  51. if ManagerContainer.NetManager:IsErrorData(data) then
  52. return
  53. end
  54. if data.reward_item_list then
  55. local rewardList = {}
  56. for i = 1, #data.reward_item_list do
  57. local _itemData = data.reward_item_list[i]
  58. rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
  59. end
  60. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
  61. end
  62. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED, data.reward_idx)
  63. end
  64. function BTRechargeRewardDataMgr:OnBTHundredRechargeNtf(data)
  65. LogWarning("=================OnBTHundredRechargeNtf========================="..Inspect(data))
  66. local hundredRechargeUnlockState = self.hundredRechargeUnlockState
  67. local hundredRechargeRewardMaxDay = self.hundredRechargeRewardMaxDay
  68. local hundredRechargeRewardCurDay = self.hundredRechargeRewardCurDay
  69. self.hundredRechargeUnlockState = data.recharge100_time and data.recharge100_time > 0 or false
  70. self.hundredRechargeRewardMaxDay = Mathf.Clamp(data.recharge100_reward_day or 0, 0, 3)
  71. self.hundredRechargeRewardCurDay = data.recharge100_reward_state or 0
  72. if self.hundredRechargeUnlockState ~= hundredRechargeUnlockState or
  73. self.hundredRechargeRewardMaxDay ~= hundredRechargeRewardMaxDay or
  74. self.hundredRechargeRewardCurDay ~= hundredRechargeRewardCurDay then
  75. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_HUNDRED_RECHARGE_REWARD_CHANGED)
  76. self:CheckHundredRechargeRedPoint()
  77. end
  78. end
  79. function BTRechargeRewardDataMgr:OnBTHundredRechargeRewardAck(data)
  80. if ManagerContainer.NetManager:IsErrorData(data) then
  81. return
  82. end
  83. if data.reward_item_list then
  84. local rewardList = {}
  85. for i = 1, #data.reward_item_list do
  86. local _itemData = data.reward_item_list[i]
  87. rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
  88. end
  89. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
  90. end
  91. end
  92. function BTRechargeRewardDataMgr:OnPayInfoNtf(data)
  93. --LogError('[wboy] SC_PAY_INFO_NTF ' .. Inspect(data))
  94. if ManagerContainer.NetManager:IsErrorData(data) then
  95. return
  96. end
  97. local lastBTTotalRecharge = self.btTotalRecharge
  98. local jiaTotalRecharge = data.bt_jia_total_recharge or 0
  99. local totalRecharge = data.total_recharge or 0
  100. self.btTotalRecharge = jiaTotalRecharge + totalRecharge
  101. if lastBTTotalRecharge == self.btTotalRecharge then
  102. return
  103. end
  104. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PAY_BT_TOTAL_RECHARGE_CHANGED)
  105. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
  106. self:CheckFirstRechargeRedPoint()
  107. end
  108. function BTRechargeRewardDataMgr:SendBTFirstRechargeRewardReq(idx)
  109. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BT_FIRST_RECHARGE_REWARD_REQ, {reward_idx = idx})
  110. end
  111. function BTRechargeRewardDataMgr:SendBTHundredRechargeRewardReq()
  112. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BT_RECHARGE100_REWARD_REQ)
  113. end
  114. function BTRechargeRewardDataMgr:InitBtTotalRecharge(data)
  115. if not data then return end
  116. self:OnPayInfoNtf(data)
  117. end
  118. function BTRechargeRewardDataMgr:InitData(data)
  119. if not data then return end
  120. LogWarning("=================InitData========================="..Inspect(data))
  121. local firstRechargeRewardState = self.firstRechargeRewardState
  122. local hundredRechargeUnlockState = self.hundredRechargeUnlockState
  123. local hundredRechargeRewardMaxDay = self.hundredRechargeRewardMaxDay
  124. local hundredRechargeRewardCurDay = self.hundredRechargeRewardCurDay
  125. self.firstRechargeRewardState = data.first_recharge_reward_state or 0
  126. self.hundredRechargeUnlockState = data.recharge100_time and data.recharge100_time > 0 or false
  127. self.hundredRechargeRewardMaxDay = Mathf.Clamp(data.recharge100_reward_day or 0, 0, 3)
  128. self.hundredRechargeRewardCurDay = data.recharge100_reward_state or 0
  129. if self.firstRechargeRewardState ~= firstRechargeRewardState then
  130. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
  131. self:CheckFirstRechargeRedPoint()
  132. end
  133. if self.hundredRechargeUnlockState ~= hundredRechargeUnlockState or
  134. self.hundredRechargeRewardMaxDay ~= hundredRechargeRewardMaxDay or
  135. self.hundredRechargeRewardCurDay ~= hundredRechargeRewardCurDay then
  136. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_HUNDRED_RECHARGE_REWARD_CHANGED)
  137. self:CheckHundredRechargeRedPoint()
  138. end
  139. end
  140. function BTRechargeRewardDataMgr:CheckFirstRechargeRedPoint()
  141. if self:IsShowHundred() or not self.btTotalRecharge or self.btTotalRecharge <= 0 then
  142. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, false)
  143. return
  144. end
  145. local cfgData = ManagerContainer.CfgMgr:GetActivitiesBtFirstChargeCfgById(1)
  146. for i = 1, #cfgData.RechargeAmount do
  147. if not self:GetBTFirstRechargeRewardState(i) and self:IsReachFirstRechargeValue(cfgData.RechargeAmount[i]) then
  148. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, true)
  149. return
  150. end
  151. end
  152. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, false)
  153. end
  154. function BTRechargeRewardDataMgr:CheckHundredRechargeRedPoint()
  155. if not self.hundredRechargeUnlockState or
  156. self.hundredRechargeRewardMaxDay <= self.hundredRechargeRewardCurDay or
  157. not self:IsShowHundred() then
  158. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.HundredRecharge, false)
  159. return
  160. end
  161. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.HundredRecharge, true)
  162. end
  163. function BTRechargeRewardDataMgr:IsReachFirstRechargeValue(value)
  164. --LogError("=====self.btTotalRecharge==="..self.btTotalRecharge.."===========================value"..value);
  165. return self.btTotalRecharge >= value
  166. end
  167. function BTRechargeRewardDataMgr:GetBTFirstRechargeRewardState(idx)
  168. local value = Bit.lshift(1, idx)
  169. return (Bit.band(self.firstRechargeRewardState, value) == value)
  170. end
  171. function BTRechargeRewardDataMgr:IsShowHundred()
  172. local value = 14 -- 2 + 4 + 8
  173. if not (Bit.band(self.firstRechargeRewardState, value) == value) then
  174. return false
  175. end
  176. return true
  177. end
  178. function BTRechargeRewardDataMgr:IsGotHundredAllRewardCompleted()
  179. return self.hundredRechargeRewardCurDay >= 3
  180. end
  181. function BTRechargeRewardDataMgr:GetBTHundredRechargeUnlockState()
  182. return self.hundredRechargeUnlockState
  183. end
  184. function BTRechargeRewardDataMgr:GetBTHundredRechargeRewardMaxDay()
  185. return self.hundredRechargeRewardMaxDay
  186. end
  187. function BTRechargeRewardDataMgr:GetBThundredRechargeRewardState(idx)
  188. if self.hundredRechargeRewardMaxDay >= idx then
  189. if self.hundredRechargeRewardCurDay >= idx then
  190. return Enum.ActivityRewardState.GotAndHas
  191. else
  192. return Enum.ActivityRewardState.Got
  193. end
  194. end
  195. return Enum.ActivityRewardState.NotGot
  196. end
  197. return BTRechargeRewardDataMgr