RechargeMonthlycardInfo.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. ---@class RechargeMonthlycardInfo
  2. RechargeMonthlycardInfo = class()
  3. local this = RechargeMonthlycardInfo
  4. UIMonthCard = {
  5. WhiteAndGoldCardID = 0,
  6. WhiteCardID = 1,
  7. GoldCardID = 2,
  8. }
  9. function this:ctor()
  10. end
  11. function this:Init()
  12. self:InitData()
  13. self:RegistMessages()
  14. end
  15. function this:InitData()
  16. self.cfgListAll = SL:GetConfigTable("cfg_MonthlyPack")
  17. self.normalCfg = self:FindCfgInfo(self.cfgListAll, UIMonthCard.WhiteCardID)
  18. self.goldCfg = self:FindCfgInfo(self.cfgListAll, UIMonthCard.GoldCardID)
  19. end
  20. function this:RegistMessages()
  21. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_RECHARGE_ACTION, self.RES_RECHARGE_ACTION, self)
  22. SL:RegisterLUAEvent(LUA_EVENT_ENTRY_MAP_LOADING_PANEL_CLOSE,self.LUA_EVENT_ENTRY_MAP_LOADING_PANEL_CLOSE,self)
  23. SL:RegisterLUAEvent(LUA_EVENT_LEVELCHANGE,self.LUA_EVENT_LEVELCHANGE,self)
  24. end
  25. function this:LUA_EVENT_ENTRY_MAP_LOADING_PANEL_CLOSE(_, message)
  26. -- self:TryReqMessageOnce()
  27. end
  28. function this:LUA_EVENT_LEVELCHANGE(_, message)
  29. self:RedDotCheck()
  30. end
  31. function this:RES_RECHARGE_ACTION(_, message)
  32. self.message = message
  33. if message.type ~= tostring(ERechargeType.MonthCardGift) then
  34. return
  35. end
  36. self:RedDotCheck()
  37. end
  38. function this:RedDotCheck()
  39. if not self.message then
  40. return
  41. end
  42. self.RedPointState = false
  43. local tabRankingConfig = SL:GetConfig("sub_mainRecharge", 2)
  44. local outLevelTbl = ConditionManager.GetConditionParams(tabRankingConfig.showCondition)
  45. if SL:GetMetaValue(EMetaVarGetKey.LEVEL) < outLevelTbl[1] then
  46. InfoManager.mainRechargeInfo:RefreshMainRechargeRedPoint("tog_BtnMonthCard",self.RedPointState)
  47. return
  48. end
  49. ---是否已查看过红点 true 为已查看
  50. local isHadLook = SL:GetLocalString(SL:GetMetaValue(EMetaVarGetKey.MAIN_ACTOR_ID) .. "_RechargeMonthlycard" ,"false")
  51. if isHadLook == "true" then
  52. local normalKey = tostring(self.normalCfg.id)
  53. local goldKey = tostring(self.goldCfg.id)
  54. self.messageTab = {}
  55. local whihtEndTime = 0
  56. local goldEndTime = 0
  57. local month_data = self.message.data.month_data
  58. local daily_data = self.message.data.daily_data
  59. local whiteReceive, goldReceive = true
  60. if month_data and month_data[normalKey] then
  61. whihtEndTime = month_data[normalKey] + 86400000 * 30
  62. end
  63. if month_data and month_data[goldKey] then
  64. goldEndTime = month_data[goldKey] + 86400000 * 30
  65. end
  66. --- receive 为true可领取
  67. if daily_data then
  68. whiteReceive = not table.contains(daily_data, normalKey)
  69. goldReceive = not table.contains(daily_data, goldKey)
  70. else
  71. whiteReceive = true
  72. goldReceive = true
  73. end
  74. self.messageTab[UIMonthCard.WhiteCardID] = { endTime = whihtEndTime, receive = whiteReceive }
  75. self.messageTab[UIMonthCard.GoldCardID] = { endTime = goldEndTime, receive = goldReceive }
  76. for i, v in pairs(self.messageTab) do
  77. if not self:CheckOneMonthIsEndTime(v.endTime) and v.receive then
  78. self.RedPointState = true
  79. break
  80. end
  81. end
  82. else
  83. self.RedPointState = true
  84. end
  85. InfoManager.mainRechargeInfo:RefreshMainRechargeRedPoint("tog_RechargeMonthlycard",self.RedPointState)
  86. end
  87. function this:TryReqMessageOnce()
  88. if not self.isReqMsg then
  89. self.isReqMsg = true
  90. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.MonthCardGift, action = "panel" })
  91. end
  92. end
  93. ---@return cfg_MonthlyPack_column
  94. function this:FindCfgInfo(tab, order)
  95. for _, v in pairs(tab) do
  96. if v.sortId == order then
  97. return v
  98. end
  99. end
  100. return nil
  101. end
  102. ---true为过期
  103. function this:CheckOneMonthIsEndTime(endTime)
  104. --- 检查是否过期
  105. local serverTime = Time.GetServerTime()
  106. if endTime ~= nil then
  107. if endTime < serverTime then
  108. return true
  109. end
  110. end
  111. return false
  112. end
  113. function this:Reset()
  114. self.isReqMsg = nil
  115. end