UIMinTipsView.lua 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. local UIMinTipsView = require("UICommonTips/UIMinTipsView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. function UIMinTipsView:OnAwake(data)
  4. self.controller = require("UICommonTips/UIMinTipsCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIMinTipsView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_REFRESH_MINTIPS, self, self.RefreshTips)
  10. end
  11. function UIMinTipsView:FillContent(data, uiBase)
  12. self.uiBase = uiBase
  13. local gameObject = self.uiBase:GetRoot()
  14. if gameObject ~= nil then
  15. self.gameObject = gameObject
  16. self.transform = gameObject.transform
  17. end
  18. self:InitGenerate(self.transform, data)
  19. self:Init()
  20. end
  21. function UIMinTipsView:Init()
  22. self.itemGoList = {}
  23. self.itemLuaList = {}
  24. self.templateItem:SetActive(false)
  25. self:SetTips()
  26. end
  27. function UIMinTipsView:RefreshTips(data)
  28. self.controller:SetData(data)
  29. self:SetTips()
  30. end
  31. function UIMinTipsView:SetTips()
  32. local tipsType = self.controller:GetTipsType()
  33. if tipsType == 1 then
  34. local pos, strKey,strParams = self.controller:GetTipsData()
  35. self:SetUIPos(pos)
  36. self:SetContent(strKey,strParams)
  37. self.content:SetActive(true)
  38. self.iconsNode:SetActive(false)
  39. elseif tipsType == 2 then
  40. self.content:SetActive(false)
  41. self.iconsNode:SetActive(true)
  42. local pos, rewards = self.controller:GetRewardsData()
  43. self:SetUIPos(pos)
  44. self:SetRewards(rewards)
  45. end
  46. end
  47. function UIMinTipsView:SetUIPos(pos)
  48. local width = self.node.rectTransform.sizeDelta.x
  49. local aPos = pos
  50. local deltaY = UIMgr.SCREEN_HEIGHT * 0.5 - aPos.y
  51. if deltaY < 90 then
  52. aPos.y = aPos.y - 45
  53. self.bg.rectTransform.pivot = Vector2(0.5,1)
  54. else
  55. aPos.y = aPos.y + 45
  56. self.bg.rectTransform.pivot = Vector2(0.5,0)
  57. end
  58. if aPos.x > 0 then
  59. local deltaX = UIMgr.SCREEN_WIDTH * 0.5 - aPos.x
  60. if deltaX < width * 0.5 then
  61. aPos.x = UIMgr.SCREEN_WIDTH * 0.5 - width * 0.5
  62. end
  63. elseif aPos.x < 0 then
  64. local deltaX = aPos.x + 0.5 * UIMgr.SCREEN_WIDTH
  65. if deltaX < 0.5 * width then
  66. aPos.x = 0.5 * width - 0.5 * UIMgr.SCREEN_WIDTH
  67. end
  68. end
  69. self.node.rectTransform.anchoredPosition = aPos
  70. self.bg.rectTransform.anchoredPosition = Vector3(0,0,0)
  71. end
  72. function UIMinTipsView:SetContent(txtKey,params)
  73. if txtKey == nil then
  74. self.content.text.text = ""
  75. else
  76. if params~=nil and type(params) == 'table' then
  77. self.content.text.text = string.formatbykey(txtKey,unpack(params))
  78. else
  79. self.content.text.text = string.formatbykey(txtKey,params)
  80. end
  81. end
  82. end
  83. function UIMinTipsView:SetRewards(rewards)
  84. for i = 1, #self.itemLuaList do
  85. self.itemLuaList[i]:SetActive(false)
  86. end
  87. if rewards == nil or #rewards == 0 then
  88. return
  89. end
  90. if #rewards >= 3 then
  91. self.iconsNode.gridLayoutGroup.constraintCount = 3
  92. else
  93. self.iconsNode.gridLayoutGroup.constraintCount = #rewards
  94. end
  95. local cnt = #rewards
  96. if cnt > 9 then
  97. cnt = 9
  98. end
  99. for i = 1, cnt do
  100. local itemLua = self:GetIconItemLua(i)
  101. local rewardData = {cfgId = rewards[i][1], num = rewards[i][2] }
  102. IconItemCtr:SetData(self, itemLua.iconItem, rewardData)
  103. if rewards[i][3] then
  104. itemLua.mask:SetActive(true)
  105. else
  106. itemLua.mask:SetActive(false)
  107. end
  108. itemLua:SetActive(true)
  109. end
  110. end
  111. function UIMinTipsView:GetIconItemLua(idx)
  112. if idx <= #self.itemLuaList then
  113. return self.itemLuaList[idx]
  114. end
  115. local itemGo = UnityEngine.GameObject.Instantiate(self.templateItem.gameObject)
  116. self.itemGoList[#self.itemGoList+1] = itemGo
  117. local itemLua = CommonUtil.BindGridViewItem2Lua(self, "TipItem", itemGo)
  118. itemLua.prefabName = "TipItem"
  119. itemGo.name = "TipItem"
  120. itemLua.transform:SetParent(self.iconsNode.transform)
  121. itemLua.transform.localScale = Vector3(1,1,1)
  122. itemLua.rectTransform.anchoredPosition3D = Vector3(0,0,0)
  123. itemLua:SetActive(true)
  124. self.itemLuaList[#self.itemLuaList+1] = itemLua
  125. return itemLua
  126. end
  127. function UIMinTipsView:RemoveEventListener()
  128. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  129. end
  130. function UIMinTipsView:AddUIEventListener()
  131. end
  132. function UIMinTipsView:OnHide()
  133. end
  134. function UIMinTipsView:OnShow(data)
  135. self.controller:SetData(data)
  136. self:SetTips()
  137. end
  138. function UIMinTipsView:OnClose()
  139. self:DestroyGoes()
  140. CommonUtil.ClearGridViewItem(self, "TipItem")
  141. self.itemLuaList = nil
  142. end
  143. function UIMinTipsView:OnDispose()
  144. self.controller:OnDispose()
  145. end
  146. function UIMinTipsView:DestroyGoes()
  147. if self.itemGoList ~= nil then
  148. for i = 1, #self.itemGoList do
  149. CommonUtil.DestroyGO(self.itemGoList[i])
  150. end
  151. end
  152. self.itemGoList = nil
  153. end
  154. return UIMinTipsView