ActivityHundredItem.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. local ActivityHundredItem = class("ActivityHundredItem",require("Activities/ActivityTypeItem"))
  2. function ActivityHundredItem: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.HundredRecharge
  9. end
  10. function ActivityHundredItem:SyncSrvData(serverData, curDayEndTime)
  11. self.reachTime = serverData.param_time
  12. self.rewardStateServer = serverData.reward_state
  13. self.curDayEndTime = curDayEndTime
  14. self:CheckRewardState()
  15. end
  16. function ActivityHundredItem: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 ActivityHundredItem:CheckRewardState()
  23. local remainTime = -1
  24. if self.reachTime and self.reachTime > 0 and self.curDayEndTime and self.curDayEndTime > 0 then
  25. remainTime = self.curDayEndTime - self.reachTime
  26. remainTime = remainTime / 1000
  27. remainTime = type(remainTime) == "number" and remainTime or #remainTime
  28. end
  29. local hasReward = false
  30. if remainTime > 172800 then
  31. if (Bit.band(self.rewardStateServer, 2) == 2) then
  32. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  33. else
  34. self.rewardStates[1] = Enum.ActivityRewardState.Got
  35. hasReward = true
  36. end
  37. if (Bit.band(self.rewardStateServer, 4) == 4) then
  38. self.rewardStates[2] = Enum.ActivityRewardState.GotAndHas
  39. else
  40. self.rewardStates[2] = Enum.ActivityRewardState.Got
  41. hasReward = true
  42. end
  43. if (Bit.band(self.rewardStateServer, 8) == 8) then
  44. self.rewardStates[3] = Enum.ActivityRewardState.GotAndHas
  45. else
  46. self.rewardStates[3] = Enum.ActivityRewardState.Got
  47. hasReward = true
  48. end
  49. elseif remainTime > 86400 then
  50. if (Bit.band(self.rewardStateServer, 2) == 2) then
  51. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  52. else
  53. self.rewardStates[1] = Enum.ActivityRewardState.Got
  54. hasReward = true
  55. end
  56. if (Bit.band(self.rewardStateServer, 4) == 4) then
  57. self.rewardStates[2] = Enum.ActivityRewardState.GotAndHas
  58. else
  59. self.rewardStates[2] = Enum.ActivityRewardState.Got
  60. hasReward = true
  61. end
  62. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  63. elseif remainTime >= 0 then
  64. if (Bit.band(self.rewardStateServer, 2) == 2) then
  65. self.rewardStates[1] = Enum.ActivityRewardState.GotAndHas
  66. else
  67. self.rewardStates[1] = Enum.ActivityRewardState.Got
  68. hasReward = true
  69. end
  70. self.rewardStates[2] = Enum.ActivityRewardState.NotGot
  71. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  72. else
  73. self.rewardStates[1] = Enum.ActivityRewardState.NotGot
  74. self.rewardStates[2] = Enum.ActivityRewardState.NotGot
  75. self.rewardStates[3] = Enum.ActivityRewardState.NotGot
  76. end
  77. self.hasReward = hasReward
  78. end
  79. function ActivityHundredItem:HasRedPoint()
  80. return self.hasReward
  81. end
  82. function ActivityHundredItem:GetRewardState()
  83. if self.hasReward then
  84. return Enum.ActivityRewardState.Got
  85. end
  86. if (self.reachTime and self.reachTime > 0) then
  87. return Enum.ActivityRewardState.GotAndHas
  88. end
  89. return Enum.ActivityRewardState.NotGot
  90. end
  91. function ActivityHundredItem:GetRewardStateByDay(day)
  92. return self.rewardStates[day] or Enum.ActivityRewardState.NotGot
  93. end
  94. return ActivityHundredItem