UIIdolActivityShopView.lua 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. local UIIdolActivityShopView = require("UIActivity/UIActivityTowerView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. local RankBgColorIcon = {"FrameNew/bg_label_red", "FrameNew/bg_label_yellow", "FrameNew/bg_label_purple", "FrameNew/bg_label_blue", "FrameNew/bg_label_green", "FrameNew/bg_label_green"}
  4. local RankBGColor = {Color(1, 0.76, 0.72, 1), Color(1, 0.86, 0.57, 1), Color(0.98, 0.67, 1, 1), Color(0.65, 0.87, 1, 1), Color(0.66, 0.92, 0.71, 1), Color(0.66, 0.92, 0.71, 1)}
  5. local BannerPath = 'RankBanner/banner_idol_sale_cn'
  6. local pageToggleData = {}
  7. local countlimit = 10
  8. local reward
  9. function UIIdolActivityShopView:OnAwake(data)
  10. self.controller = require("UISeason/UIIdolActivityShopCtr"):new()
  11. self.controller:Init(self)
  12. self.controller:SetData(data)
  13. end
  14. function UIIdolActivityShopView:AddEventListener()
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RUNE_SHOP_DATA_CHANGED, self, self.RefreshNew)
  16. end
  17. function UIIdolActivityShopView: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 UIIdolActivityShopView:Init()
  28. self.rankIdx = 0
  29. self.controller:InitData()
  30. self.controller:SendShopInfoReq()
  31. self:InitGrid()
  32. self:InitTopInfo()
  33. end
  34. function UIIdolActivityShopView:InitGrid()
  35. self.LimitedListScroll.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  36. return self:GetShopItemByRowColumn(gridView, itemIndex, row, column)
  37. end, nil)
  38. self.LimitedListScroll.loopGridView.ScrollRect.enabled = false
  39. self.LimitedListScroll:SetActive(true)
  40. end
  41. function UIIdolActivityShopView:InitTopInfo()
  42. self.mapToggle:SetActive(false)
  43. self.rewardsToggle:SetActive(false)
  44. self.saleToggle.toggle.isOn = true
  45. CommonUtil.LoadIcon(self, BannerPath, function (sprite)
  46. self.banner1.image.sprite = sprite
  47. end)
  48. self.rankListBox:SetActive(false)
  49. self.btnQuestion:SetActive(false)
  50. self.timeBox:SetActive(false)
  51. self.banner1:SetActive(true)
  52. self.banner2:SetActive(false)
  53. self.banner3:SetActive(false)
  54. self.btnGoto:SetActive(false)
  55. self.btnGetRewards:SetActive(false)
  56. self.bottom:SetActive(false)
  57. end
  58. function UIIdolActivityShopView:OnValueChangedToggle(index, needRefresh)
  59. local limitedState = (pageToggleData.toggleDefaultIndex == 1)
  60. self.limitedBox:SetActive(limitedState)
  61. if limitedState then
  62. self.controller:RefreshCurShopData(true)
  63. local datas = self.controller:GetShowGoodsDatas()
  64. local num = datas and #datas or 0
  65. if not needRefresh then
  66. self.LimitedListScroll.loopGridView:RefreshListByIndex(num, 0)
  67. else
  68. self.LimitedListScroll.loopGridView:RefreshListByIndex(num)
  69. end
  70. end
  71. end
  72. function UIIdolActivityShopView:RefreshNew()
  73. if pageToggleData.toggleDefaultIndex == 1 then
  74. self:OnValueChangedToggle(nil, true)
  75. end
  76. end
  77. function UIIdolActivityShopView:GetShopItemByRowColumn(gridView, itemIndex, row, column)
  78. local datas = self.controller:GetShowGoodsDatas()
  79. if not datas then return end
  80. local item = gridView:NewListViewItem('RankShopLimitedItem')
  81. item.gameObject.name = itemIndex
  82. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'RankShopLimitedItem', item.gameObject)
  83. local data = datas[itemIndex + 1]
  84. local cfgData = data.cfgData
  85. CommonUtil.LoadIcon(self, cfgData.Banner, function (sprite)
  86. itemLua.itemBg.image.sprite = sprite
  87. end)
  88. CommonUtil.LoadIcon(self, cfgData.NameImg, function (sprite)
  89. itemLua.itemText.image.sprite = sprite
  90. end)
  91. itemLua.saveLabel.text.text.text = I18N.T( cfgData.ExtraNum)
  92. itemLua.presentPrice.number.text.text = data.price
  93. itemLua.labelLimited.textLimited.uILocalizeScript:SetContentAndValues("RushListLimitBuy", {data:GetRemainBuyNum()})
  94. itemLua.soldout:SetActive(not data:IsCanBuy())
  95. local itemDatas = {}
  96. for _,v in pairs(cfgData.Reward) do
  97. local itemData = {cfgId = v[1], num = v[2]}
  98. itemDatas[#itemDatas + 1] = itemData
  99. end
  100. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew(self, itemDatas, Enum.PrefabNames.RankShopRewardIconItem, itemLua.RewardsNode.transform, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  101. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnPay, data)
  102. return item
  103. end
  104. function UIIdolActivityShopView:OnItemClick(button, params)
  105. local data = params[0]
  106. ManagerContainer.LuaUIMgr:OpenTips(data)
  107. end
  108. function UIIdolActivityShopView:OnPay(button, params)
  109. if not ManagerContainer.DataMgr.CompetitionData:CanOpenSeasonUI() then
  110. return
  111. end
  112. local IsOver = ManagerContainer.DataMgr.CompetitionData:IsOveerCurSeason()
  113. if IsOver then
  114. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("LabelOver")
  115. return
  116. end
  117. local data = params[0]
  118. local shopType, shopSubType = self.controller:GetCurShopType()
  119. local errorCode = ManagerContainer.PayMgr:RuneShopPay(shopType, shopSubType, data.id)
  120. local errorCodeKey = ManagerContainer.PayMgr:GetInitPayErrorCodeLangKey(errorCode)
  121. if not errorCodeKey then
  122. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  123. end
  124. end
  125. function UIIdolActivityShopView:RemoveEventListener()
  126. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  127. end
  128. function UIIdolActivityShopView:AddUIEventListener()
  129. self.uiBase:AddButtonEventListener(self.backBtn.button, self, self.OnCloseClick)
  130. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.OnValueChangedToggle, self)
  131. end
  132. function UIIdolActivityShopView:OnCloseClick()
  133. self:UIClose()
  134. end
  135. function UIIdolActivityShopView:OnHide()
  136. end
  137. function UIIdolActivityShopView:OnShow(data)
  138. self.controller:SetData(data)
  139. end
  140. function UIIdolActivityShopView:OnClose()
  141. end
  142. function UIIdolActivityShopView:OnDispose()
  143. CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.IconSmallItem)
  144. CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.RankShopRewardIconItem)
  145. self.LimitedListScroll.loopGridView:Dispose()
  146. self.controller:OnDispose()
  147. end
  148. function UIIdolActivityShopView:OnPageInEnd()
  149. self.super.OnPageInEnd(self)
  150. self.LimitedListScroll.loopGridView.ScrollRect.enabled = true
  151. end
  152. function UIIdolActivityShopView:OnOpenStateChanged(isOpen)
  153. if isOpen then return end
  154. self:UIClose()
  155. end
  156. return UIIdolActivityShopView