UIPetStampView.lua 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. local UIPetStampView = require("UIPet/UIPetStampView_Generate")
  2. local PetMatsGridView = require("UIPet/PetMatsGridView")
  3. local RectOffset = UnityEngine.RectOffset
  4. function UIPetStampView:OnAwake(data)
  5. self.controller = require("UIPet/UIPetStampCtr"):new()
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UIPetStampView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  11. end
  12. function UIPetStampView:FillContent(data, uiBase)
  13. self.uiBase = uiBase
  14. local gameObject = self.uiBase:GetRoot()
  15. if gameObject ~= nil then
  16. self.gameObject = gameObject
  17. self.transform = gameObject.transform
  18. end
  19. self:InitGenerate(self.transform, data)
  20. self:Init()
  21. end
  22. function UIPetStampView:Init()
  23. --补充宠物装备
  24. self.scrollView.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  25. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  26. end, nil)
  27. self:InitEquipGridData()
  28. end
  29. function UIPetStampView:OnPageInEnd()
  30. self.super.OnPageInEnd(self)
  31. self:RefreshStamps()
  32. end
  33. function UIPetStampView:InitEquipGridData()
  34. local loopGridView = self.scrollView.loopGridView
  35. local itemSize = loopGridView.ItemSize
  36. local itemPadding = loopGridView.ItemPadding
  37. local padding = loopGridView.Padding
  38. local itemSizeWithPadding = itemPadding + itemSize
  39. local width = loopGridView.ViewPortWidth - padding.left - padding.right + itemPadding.x
  40. local height = loopGridView.ViewPortHeight - padding.top
  41. local row = Mathf.Floor(width / (itemSizeWithPadding.x))
  42. local column = Mathf.Ceil(height / (itemSizeWithPadding.y))
  43. local realWidth = row * itemSizeWithPadding.x
  44. local offset = width - realWidth
  45. if offset > 0 then
  46. offset = offset * 0.5
  47. local newPadding = RectOffset(offset + padding.left, offset + padding.right, padding.top, padding.bottom)
  48. loopGridView:SetPadding(newPadding)
  49. end
  50. loopGridView:SetGridFixedGroupCount(SuperScrollView.GridFixedType.ColumnCountFixed, row)
  51. self.controller:SetGridRowColumn(row, column)
  52. end
  53. function UIPetStampView:RefreshStamps()
  54. self.controller:RefreshShowDataType()
  55. local loopGridView = self.scrollView.loopGridView
  56. local length = self.controller:GetShowDataLength()
  57. local realLength = self.controller:GetShowDataRealLength()
  58. self.noStamp:SetActive(realLength == 0)
  59. if realLength > 0 then
  60. loopGridView:SetListItemCount(length, true)
  61. loopGridView:RefreshAllShownItem()
  62. end
  63. end
  64. function UIPetStampView:GetItemByRowColumn(gridView, itemIndex, row, column)
  65. local length = self.controller:GetShowDataLength()
  66. if (itemIndex < 0 or itemIndex >= length) then
  67. return nil
  68. end
  69. local showData = self.controller:GetShowData(itemIndex)
  70. local item = nil
  71. if showData then
  72. item = gridView:NewListViewItem("IconItem")
  73. item.gameObject.name = itemIndex
  74. local itemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", item.gameObject)
  75. CommonUtil.UpdateItemPrefab(self, itemlua, showData, Enum.ItemIEnterType.PetStamp, self, self.OnStampClick)
  76. else
  77. item = gridView:NewListViewItem('IconEmptyItem')
  78. end
  79. return item
  80. end
  81. function UIPetStampView:OnStampClick(button, params)
  82. local data = params[0]
  83. ManagerContainer.LuaUIMgr:OpenTips(data)
  84. end
  85. function UIPetStampView:RemoveEventListener()
  86. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  87. end
  88. function UIPetStampView:AddUIEventListener()
  89. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnCloseClick)
  90. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnCloseClick)
  91. end
  92. function UIPetStampView:OnCloseClick()
  93. self:UIClose()
  94. end
  95. function UIPetStampView:OnHide()
  96. end
  97. function UIPetStampView:OnShow(data)
  98. self.controller:SetData(data)
  99. end
  100. function UIPetStampView:OnClose()
  101. self.scrollView.loopGridView:Dispose()
  102. end
  103. function UIPetStampView:OnDispose()
  104. self.controller:OnDispose()
  105. end
  106. return UIPetStampView