ActivityFirstRechargeItem.lua 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. local ActivityFirstRechargeItem = class('ActivityFirstRechargeItem', require('Activities/ActivityTypeItem'))
  2. function ActivityFirstRechargeItem:ctor()
  3. self.reachTime = nil
  4. self.rewardStateServer = nil
  5. self.curDayEndTime = nil
  6. self.rewardStates = {}
  7. self.hasReward = false
  8. self.redPointType = Enum.RPNotifyType.FirstRecharge
  9. end
  10. function ActivityFirstRechargeItem:SyncSrvData(serverData, curDayEndTime)
  11. self.reachTime = serverData.first_charge_time
  12. self.rewardStateServer = serverData.first_charge_reward_state
  13. self.curDayEndTime = curDayEndTime
  14. self:CheckRewardState()
  15. end
  16. function ActivityFirstRechargeItem:SyncCurDayEndTime(curDayEndTime)
  17. if self.curDayEndTime == curDayEndTime then return false end
  18. self.curDayEndTime = curDayEndTime
  19. self:CheckRewardState()
  20. return true
  21. end
  22. function ActivityFirstRechargeItem:SyncRewardState(firstChargeTime, rewardStateServer)
  23. if self.firstChargeTime == firstChargeTime
  24. and self.rewardStateServer == rewardStateServer
  25. then
  26. return false
  27. end
  28. self.firstChargeTime = firstChargeTime
  29. self.rewardStateServer = rewardStateServer
  30. self:CheckRewardState()
  31. return true
  32. end
  33. function ActivityFirstRechargeItem:CheckRewardState()
  34. local remainTime = -1
  35. if self.reachTime and self.reachTime > 0 and self.curDayEndTime and self.curDayEndTime > 0 then
  36. remainTime = self.curDayEndTime - self.reachTime
  37. remainTime = remainTime / 1000
  38. remainTime = type(remainTime) == "number" and remainTime or #remainTime
  39. end
  40. local hasReward = false
  41. if remainTime >= 172800 then
  42. if (Bit.band(self.rewardStateServer, 2) == 2) then
  43. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  44. else
  45. self.rewardStates[1] = Enum.ActivityRewardState.Got
  46. hasReward = true
  47. end
  48. if (Bit.band(self.rewardStateServer, 4) == 4) then
  49. self.rewardStates[2] = Enum.ActivityRewardState.GotAndHas
  50. else
  51. self.rewardStates[2] = Enum.ActivityRewardState.Got
  52. hasReward = true
  53. end
  54. if (Bit.band(self.rewardStateServer, 8) == 8) then
  55. self.rewardStates[3] = Enum.ActivityRewardState.GotAndHas
  56. else
  57. self.rewardStates[3] = Enum.ActivityRewardState.Got
  58. hasReward = true
  59. end
  60. elseif remainTime >= 86400 then
  61. if (Bit.band(self.rewardStateServer, 2) == 2) then
  62. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  63. else
  64. self.rewardStates[1] = Enum.ActivityRewardState.Got
  65. hasReward = true
  66. end
  67. if (Bit.band(self.rewardStateServer, 4) == 4) then
  68. self.rewardStates[2] = Enum.ActivityRewardState.GotAndHas
  69. else
  70. self.rewardStates[2] = Enum.ActivityRewardState.Got
  71. hasReward = true
  72. end
  73. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  74. elseif remainTime >= 0 then
  75. if (Bit.band(self.rewardStateServer, 2) == 2) then
  76. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  77. else
  78. self.rewardStates[1] = Enum.ActivityRewardState.Got
  79. hasReward = true
  80. end
  81. self.rewardStates[2] = Enum.ActivityRewardState.NotGot
  82. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  83. else
  84. self.rewardStates[1] = Enum.ActivityRewardState.NotGot
  85. self.rewardStates[2] = Enum.ActivityRewardState.NotGot
  86. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  87. end
  88. self.hasReward = hasReward
  89. end
  90. function ActivityFirstRechargeItem:HasRedPoint()
  91. return self.hasReward
  92. end
  93. function ActivityFirstRechargeItem:GetRewardState()
  94. if self.hasReward then
  95. return Enum.ActivityRewardState.Got
  96. end
  97. if (self.reachTime and self.reachTime > 0) then
  98. return Enum.ActivityRewardState.GotAndHas
  99. end
  100. return Enum.ActivityRewardState.NotGot
  101. end
  102. function ActivityFirstRechargeItem:GetRewardStateByDay(day)
  103. return self.rewardStates[day] or Enum.ActivityRewardState.NotGot
  104. end
  105. function ActivityFirstRechargeItem:IsAllRewardGotAndHas()
  106. if not self.rewardStates then return false end
  107. for _, rewardState in pairs(self.rewardStates) do
  108. if rewardState ~= Enum.ActivityRewardState.GotAndHas then
  109. return false
  110. end
  111. end
  112. return true
  113. end
  114. function ActivityFirstRechargeItem:IsNeedOpen()
  115. if self:IsAllRewardGotAndHas() then
  116. return false
  117. end
  118. if not ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(66) then
  119. return false
  120. end
  121. local isOpenState = ManagerContainer.PlayerPrefsMgr:GetBoolean("FirstRechargeOpenState", false)
  122. if not isOpenState then
  123. ManagerContainer.PlayerPrefsMgr:SetBoolean("FirstRechargeOpenState", true)
  124. return true
  125. end
  126. return false
  127. end
  128. return ActivityFirstRechargeItem