ActivityFortnightLoginItem.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. local ActivityFortnightLoginItem = class("ActivityFortnightLoginItem",require("Activities/ActivityTypeItem"))
  2. function ActivityFortnightLoginItem:ctor(actId)
  3. self.curDay = 0
  4. self:InitData(actId)
  5. end
  6. function ActivityFortnightLoginItem:InitData(actId)
  7. self.data = {}
  8. local cfgList = ManagerContainer.CfgMgr:GetFortnightOnlineCfg(actId)
  9. if cfgList ~= nil then
  10. table.sort(cfgList, function (a,b)
  11. return a.Day < b.Day
  12. end)
  13. for i = 1, 14 do
  14. local cfg = cfgList[i]
  15. if cfg ~= nil then
  16. self.data[#self.data+1] = {day = i, qualityIcon = cfg.RewardBg,txtClr = cfg.TextColour, rewards = cfg.Rewards, isGotReward = false, isOutdate = false,isFinished = false}
  17. end
  18. end
  19. end
  20. self:SetRPType(Enum.RPNotifyType.FortnightLogin)
  21. end
  22. function ActivityFortnightLoginItem:SyncSrvData(serverData)
  23. self.curDay = serverData[1]
  24. local loginRewardData = serverData[2]
  25. for i = 1, self.curDay do
  26. local item = self:GetDayData(i)
  27. if item ~= nil then
  28. item.isGotReward = false
  29. item.isFinished = true
  30. item.isOutdate = (i < self.curDay)
  31. end
  32. end
  33. if loginRewardData ~= nil then
  34. for i = 1, #loginRewardData do
  35. local item = self:GetDayData(loginRewardData[i].key)
  36. if item ~= nil then
  37. item.isOutdate = false
  38. item.isGotReward = loginRewardData[i].value > 0
  39. end
  40. end
  41. end
  42. end
  43. function ActivityFortnightLoginItem:GetDayData(d)
  44. if self.data == nil then
  45. return nil
  46. end
  47. for i = 1, #self.data do
  48. if self.data[i].day == d then
  49. return self.data[i]
  50. end
  51. end
  52. return nil
  53. end
  54. function ActivityFortnightLoginItem:HasRedPoint()
  55. if self.data == nil then
  56. return false
  57. end
  58. for i = 1, #self.data do
  59. local redPoint = self.data[i].isFinished and (not self.data[i].isOutdate) and (not self.data[i].isGotReward)
  60. if redPoint then
  61. return true
  62. end
  63. end
  64. return false
  65. end
  66. function ActivityFortnightLoginItem:SendRewardReq(day)
  67. ManagerContainer.DataMgr.ActsDataMgr:SendGetActivityRewardReq(self.actId,day)
  68. end
  69. return ActivityFortnightLoginItem