UIPrivilegeCardTipsView.lua 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. local UIPrivilegeCardTipsView = require("UIRuneShop/UIPrivilegeCardTipsView_Generate")
  2. local ConditionJudge = require("Common/ConditionJudge")
  3. function UIPrivilegeCardTipsView:OnAwake(data)
  4. self.controller = require("UIRuneShop/UIPrivilegeCardTipsCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIPrivilegeCardTipsView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RUNE_SHOP_DATA_CHANGED, self, self.OnRuneShopDataChanged)
  10. end
  11. function UIPrivilegeCardTipsView: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 UIPrivilegeCardTipsView:Init()
  22. self.controller:InitData()
  23. self.privilegeCardItem.privilegeScrollView.loopListView:InitListView(0, function (loopListView, itemIdx)
  24. return self:GetItemByIndexPrivilege(loopListView, itemIdx)
  25. end, nil, nil)
  26. self.privilegeCardItem.rewardScrollView.loopGridView:InitGridView(0, function (loopGridView, itemIdx, row, column)
  27. return self:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column)
  28. end, nil, nil)
  29. self.privilegeCardItem.privilegeScrollView.loopListView.ScrollRect.enabled = false
  30. self.privilegeCardItem.rewardScrollView.loopGridView.ScrollRect.enabled = false
  31. local id = self.controller:GetCfgId()
  32. local cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id)
  33. if not cfgData then
  34. self.privilegeCardItem:SetActive(false)
  35. return
  36. end
  37. local privilegeCardItem = self.privilegeCardItem
  38. privilegeCardItem.privilegeLv1:SetActive(id == 1)
  39. privilegeCardItem.privilegeLv2:SetActive(id == 2)
  40. local buyRewards = cfgData.BuyReward
  41. if buyRewards then
  42. local buyReward = buyRewards[1]
  43. if buyReward then
  44. self:RefreshCurrenyItem(privilegeCardItem.buyReward1, buyReward[1], buyReward[2], true)
  45. else
  46. self:RefreshCurrenyItem(privilegeCardItem.buyReward1)
  47. end
  48. buyReward = buyRewards[2]
  49. if buyReward then
  50. self:RefreshCurrenyItem(privilegeCardItem.buyReward2, buyReward[1], buyReward[2], true)
  51. else
  52. self:RefreshCurrenyItem(privilegeCardItem.buyReward2)
  53. end
  54. else
  55. self:RefreshCurrenyItem(privilegeCardItem.buyReward1)
  56. self:RefreshCurrenyItem(privilegeCardItem.buyReward2)
  57. end
  58. privilegeCardItem.presentPrice.number.text.text = tostring(cfgData.RMB)
  59. privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(0, true)
  60. self.privilegeUnlockDess = cfgData.UnlockDes
  61. if self.privilegeUnlockDess then
  62. privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(#self.privilegeUnlockDess, true)
  63. end
  64. privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(0, true)
  65. self.privilegeRewards = nil
  66. if cfgData.Reward then
  67. self.privilegeRewards = {}
  68. for i = 1, #cfgData.Reward do
  69. local reward = cfgData.Reward[i]
  70. self.privilegeRewards[#self.privilegeRewards+1] = {cfgId = reward[1], num = reward[2]}
  71. end
  72. end
  73. if self.privilegeRewards then
  74. privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(#self.privilegeRewards, true)
  75. end
  76. self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.presentPrice.button, self, self.OnClickPresentPriceBtn)
  77. if cfgData.UnlockCond then
  78. local result, _, content = ConditionJudge:ConditionPassResult1(cfgData.UnlockCond)
  79. if not result then
  80. privilegeCardItem.privilegeCardLock:SetActive(true)
  81. privilegeCardItem.privilegeCardLock.textDsc.text.text = tostring(content)
  82. return
  83. end
  84. end
  85. privilegeCardItem.privilegeCardLock:SetActive(false)
  86. end
  87. function UIPrivilegeCardTipsView:RemoveEventListener()
  88. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  89. end
  90. function UIPrivilegeCardTipsView:AddUIEventListener()
  91. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  92. end
  93. function UIPrivilegeCardTipsView:OnHide()
  94. end
  95. function UIPrivilegeCardTipsView:OnShow(data)
  96. self.controller:SetData(data)
  97. end
  98. function UIPrivilegeCardTipsView:OnClose()
  99. end
  100. function UIPrivilegeCardTipsView:OnDispose()
  101. self.privilegeUnlockDess = nil
  102. self.privilegeRewards = nil
  103. self.privilegeCardItem.privilegeScrollView.loopListView:Dispose()
  104. self.privilegeCardItem.rewardScrollView.loopGridView:Dispose()
  105. self.controller:OnDispose()
  106. end
  107. function UIPrivilegeCardTipsView:OnPageInEnd()
  108. self.super:OnPageInEnd()
  109. self.privilegeCardItem.privilegeScrollView.loopListView.ScrollRect.enabled = true
  110. self.privilegeCardItem.rewardScrollView.loopGridView.ScrollRect.enabled = true
  111. end
  112. function UIPrivilegeCardTipsView:OnClickCloseBtn()
  113. self:UIClose()
  114. end
  115. function UIPrivilegeCardTipsView:OnClickPresentPriceBtn()
  116. local id = self.controller:GetCfgId()
  117. local cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id)
  118. if not cfgData then
  119. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('PayError_ValidPay')
  120. self:UIClose()
  121. return
  122. end
  123. if cfgData.UnlockCond then
  124. local result, _, content = ConditionJudge:ConditionPassResult1(cfgData.UnlockCond)
  125. if not result then
  126. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(content)
  127. self:UIClose()
  128. return
  129. end
  130. end
  131. local errorCodeKey = self.controller:SendPay(id)
  132. if not errorCodeKey then
  133. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  134. end
  135. self:UIClose()
  136. end
  137. function UIPrivilegeCardTipsView:OnRuneShopDataChanged(runeShopType, runeShopSubType)
  138. if runeShopType ~= Enum.RuneShopType.Gifts then return end
  139. if runeShopSubType ~= Enum.RuneShopSubType.ROCoin then return end
  140. if self.controller:IsValidData() then
  141. return
  142. end
  143. self:UIClose()
  144. end
  145. function UIPrivilegeCardTipsView:GetItemByIndexPrivilege(loopListView, itemIdx)
  146. local unlockDess = self.privilegeUnlockDess
  147. if not unlockDess then
  148. return nil
  149. end
  150. local unlockDes = unlockDess[itemIdx + 1]
  151. if not unlockDes then
  152. return nil
  153. end
  154. local item = loopListView:NewListViewItem('EntryUnlockDscItem')
  155. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject)
  156. if itemLua then
  157. local idx = unlockDes[1] or 0
  158. itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx)
  159. local params = {}
  160. local langKey = unlockDes[2]
  161. for i = 3, #unlockDes do
  162. params[#params + 1] = tostring(unlockDes[i])
  163. end
  164. itemLua.desTxt.text.text = string.formatbykey(langKey, unpack(params))
  165. end
  166. ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
  167. return item
  168. end
  169. function UIPrivilegeCardTipsView:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column)
  170. if not self.privilegeRewards then
  171. return nil
  172. end
  173. local reward = self.privilegeRewards[itemIdx + 1]
  174. if not reward then
  175. return nil
  176. end
  177. local item = loopGridView:NewListViewItem('Item')
  178. local iconItem = item.transform:Find('IconItem')
  179. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', iconItem.gameObject)
  180. CommonUtil.UpdateItemPrefab(self, itemLua, reward, nil, self, self.ShowItemTips, reward)
  181. return item
  182. end
  183. function UIPrivilegeCardTipsView:RefreshCurrenyItem(itemLua, itemCfgId, itemNum, ignoreIcon)
  184. if not itemCfgId or not itemNum then
  185. itemLua:SetActive(false)
  186. return
  187. end
  188. itemLua.number.text.text = CommonUtil.FormatNumber(itemNum)
  189. itemLua:SetActive(true)
  190. if ignoreIcon then return end
  191. itemLua.icon.image.sprite = nil
  192. itemLua.icon.image.enabled = false
  193. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(itemCfgId)
  194. if itemCfgData then
  195. CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function(sprite)
  196. if sprite then
  197. itemLua.icon.image.sprite = sprite
  198. itemLua.icon.image.enabled = true
  199. end
  200. end)
  201. end
  202. end
  203. return UIPrivilegeCardTipsView