UIMailView.lua 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. local UIMailView = require("UIMailBox/UIMailView_Generate")
  2. local BitUtil = require("BitUtil")
  3. local MailIdEnum = {
  4. ArenaRank = 10001,
  5. ArenaDan = 10002,
  6. SeasonReward1 = 20001,
  7. SeasonReward2 = 20002,
  8. }
  9. function UIMailView:OnAwake(data)
  10. self.controller = require("UIMailBox/UIMailCtr"):new()
  11. self.controller:Init(self)
  12. self.controller:SetData(data)
  13. end
  14. function UIMailView:AddEventListener()
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REWARD_MAIL, self, self.RewardMail)
  16. end
  17. function UIMailView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UIMailView:Init()
  28. local data = self.controller:GetData()
  29. self:RefreshState()
  30. local param, param1
  31. if data.paramList then
  32. param = data.paramList[1]
  33. param1 = data.paramList[2]
  34. if data.type == Enum.MailType.Competition then
  35. --if data.configId == MailIdEnum.SeasonReward1 or data.configId == MailIdEnum.SeasonReward2 then
  36. if data.paramList[1] then
  37. local conpetionId = data.paramList[1]
  38. local competionData = ManagerContainer.CfgMgr:GetCompetitionDataById(conpetionId)
  39. param = I18N.T(competionData.CompetitionName)
  40. param1 = I18N.T(competionData.CompetitionTitle)
  41. end
  42. --end
  43. elseif data.type == Enum.MailType.VipLevelUp then
  44. local vipLv = data.paramList[1]
  45. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  46. if vipCfg then
  47. param = I18N.T(vipCfg.Name)
  48. end
  49. elseif data.type == Enum.MailType.GuildWarHight then
  50. local id = data.paramList[1]
  51. local langKey = self:GetGuildWarRewardName(id, 'Ranking', 'DeaconName')
  52. if langKey then
  53. param = I18N.T(langKey)
  54. end
  55. elseif data.type == Enum.MailType.GuildWarNormal then
  56. local id = data.paramList[1]
  57. local langKey = self:GetGuildWarRewardName(id, 'Ranking', 'GuildsmenName')
  58. if langKey then
  59. param = I18N.T(langKey)
  60. end
  61. elseif data.type == Enum.MailType.GuildWarScore then
  62. local id = data.paramList[1]
  63. local langKey = self:GetGuildWarRewardName(id, 'PointMvp', 'PointMvpName')
  64. if langKey then
  65. param = I18N.T(langKey)
  66. end
  67. elseif data.type == Enum.MailType.GuildWarKiller then
  68. local id = data.paramList[1]
  69. local langKey = self:GetGuildWarRewardName(id, 'KillerMvp', 'KillerMvpName')
  70. if langKey then
  71. param = I18N.T(langKey)
  72. end
  73. elseif data.type == Enum.MailType.GuildDemonBoss then
  74. local id = data.paramList[1]
  75. if id and id > 0 then
  76. local data = ManagerContainer.CfgMgr:GetGuildDemonCfgCfgById(id)
  77. if data and data.WeekDay then
  78. param = I18N.T('DemonMailDesc0'..data.WeekDay)
  79. end
  80. end
  81. else
  82. if data.configId == MailIdEnum.ArenaRank then
  83. param = data.paramList[1]
  84. elseif data.configId == MailIdEnum.ArenaDan then
  85. local levelId = data.paramList[1]
  86. local arenaLevelData = ManagerContainer.CfgMgr:GetArenaLevelById(levelId)
  87. param = I18N.T(arenaLevelData.ArenaLevelName)
  88. end
  89. end
  90. end
  91. local mailTitle, mailContent = data.title, data.content
  92. --LogError("===================111========== mailTitle ="..mailTitle)
  93. local mailCfgData = ManagerContainer.CfgMgr:GetMailDataByCfgId(data.configId)
  94. --LogError("============================= configId ="..data.configId)
  95. if mailCfgData then
  96. mailTitle = I18N.T(mailCfgData.Title)
  97. mailContent = I18N.SetLanguageValue(mailCfgData.Text, param, param1)
  98. --LogError("============================= mailTitle ="..mailTitle)
  99. end
  100. self.mailTtle.text.text = mailTitle
  101. self.text.text.text = mailContent
  102. if data.expireTime then
  103. local endTime = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(data.expireTime)
  104. local time = DateTimeUtil.convertSeconds2TimeStr1(endTime, true, false)
  105. self.timer.text.text = I18N.SetLanguageValue("RemainTime", time)
  106. end
  107. local award = data.rewardList and #data.rewardList > 0
  108. self.award:SetActive(award)
  109. self.btnDraw:SetActive(award)
  110. if award then
  111. CommonUtil.LoopGridViewEleCreateNew(self, self.scrollView.loopHorizontalScrollRect, self.content.horizontalLayoutGroup, data.rewardList, 0, self, self.UpdateAwardItem)
  112. end
  113. end
  114. function UIMailView:UpdateAwardItem(itemLua, idx, itemData)
  115. if not itemLua or not itemData then
  116. return
  117. end
  118. local data = {cfgId = itemData.key, num = itemData.value}
  119. CommonUtil.UpdateItemPrefab(self, itemLua, data, Enum.ItemIEnterType.Bag, self, self.ShowItemTips)
  120. end
  121. function UIMailView:ShowItemTips(button, params)
  122. local data = params[0]
  123. ManagerContainer.LuaUIMgr:OpenTips(data)
  124. end
  125. function UIMailView:RefreshState()
  126. local data = self.controller:GetData()
  127. local state = data.state
  128. local readState = BitUtil.ParseMailReadState(state) == 1
  129. local rewardState = BitUtil.ParseMailRewardState(state) == 1
  130. self.litter:SetActive(not readState)
  131. self.item:SetActive(not readState and not rewardState and #data.rewardList > 0)
  132. self.litterOpen:SetActive(readState)
  133. self.itemOpen:SetActive(readState and not rewardState and #data.rewardList > 0)
  134. --CommonUtil.SetTotalChildrenGray(self.btnDraw, rewardState)
  135. self.btnDraw.text.uILocalizeScript:SetContent(rewardState and "BtnHaveReceive" or "BtnReceive")
  136. self.btnDraw.button.interactable = not rewardState
  137. end
  138. function UIMailView:RewardMail(needRefresh)
  139. if needRefresh then
  140. local data = self.controller:GetData()
  141. local id = data.id
  142. data = ManagerContainer.DataMgr.MailData:GetMailDataById(id)
  143. self.controller:SetData(data)
  144. end
  145. self:RefreshState()
  146. end
  147. function UIMailView:RemoveEventListener()
  148. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  149. end
  150. function UIMailView:AddUIEventListener()
  151. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  152. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  153. self:UIClose()
  154. end)
  155. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
  156. self:UIClose()
  157. end)
  158. self.uiBase:AddButtonEventListener(self.btnDraw.button, function ()
  159. local data = self.controller:GetData()
  160. local rewardState = BitUtil.ParseMailRewardState(data.state) == 1
  161. if rewardState then
  162. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("RewardAlready")
  163. return
  164. end
  165. self.controller:SendRewardMail(data.id)
  166. end)
  167. end
  168. function UIMailView:OnHide()
  169. end
  170. function UIMailView:OnShow(data)
  171. self.controller:SetData(data)
  172. self:Init()
  173. end
  174. function UIMailView:OnClose()
  175. end
  176. function UIMailView:OnDispose()
  177. self.scrollView.loopHorizontalScrollRect:ClearCells()
  178. end
  179. function UIMailView:OnDispose()
  180. end
  181. function UIMailView:GetGuildWarRewardName(id, keyName, desName)
  182. local GuildWarAgainstCfg = ManagerContainer.CfgMgr:GetGuildWarAgainstCfg()
  183. if GuildWarAgainstCfg then
  184. for key, value in pairs(GuildWarAgainstCfg) do
  185. if value[keyName] == id then
  186. return value[desName]
  187. end
  188. end
  189. end
  190. end
  191. return UIMailView