UIOptionalGiftView.lua 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. local UIOptionalGiftView = require("UITips/UIOptionalGiftView_Generate")
  2. function UIOptionalGiftView:OnAwake(data)
  3. self.controller = require("UITips/UIOptionalGiftCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIOptionalGiftView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ITEM_CHANGE, self, self.OnItemChanged)
  9. end
  10. function UIOptionalGiftView:FillContent(data, uiBase)
  11. self.uiBase = uiBase
  12. local gameObject = self.uiBase:GetRoot()
  13. if gameObject ~= nil then
  14. self.gameObject = gameObject
  15. self.transform = gameObject.transform
  16. end
  17. self:InitGenerate(self.transform, data)
  18. self:Init()
  19. end
  20. function UIOptionalGiftView:Init()
  21. self.scrollView.loopGridView:InitGridView(0, function (gridView, itemIndex, row, column)
  22. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  23. end, nil)
  24. self.scrollView.loopGridView.ScrollRect.enabled = false
  25. self.controller:RefreshData()
  26. self:RefreshData()
  27. end
  28. function UIOptionalGiftView:RemoveEventListener()
  29. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  30. end
  31. function UIOptionalGiftView:AddUIEventListener()
  32. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
  33. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  34. self.uiBase:AddButtonUniqueEventListener(self.btn_OK.button, self, self.OnClickSureBtn)
  35. end
  36. function UIOptionalGiftView:OnHide()
  37. end
  38. function UIOptionalGiftView:OnShow(data)
  39. if data then
  40. self.controller:SetData(data)
  41. self.controller:RefreshData()
  42. self:RefreshData()
  43. end
  44. end
  45. function UIOptionalGiftView:OnClose()
  46. end
  47. function UIOptionalGiftView:OnDispose()
  48. self.scrollView.loopGridView:Dispose()
  49. self.controller:OnDispose()
  50. end
  51. function UIOptionalGiftView:OnPageInEnd()
  52. self.super.OnPageInEnd(self)
  53. self.scrollView.loopGridView.ScrollRect.enabled = true
  54. end
  55. function UIOptionalGiftView:OnItemChanged()
  56. if self.controller:CanCost() then
  57. self:RefreshDes()
  58. else
  59. self:UIClose()
  60. end
  61. end
  62. function UIOptionalGiftView:OnClickCloseBtn()
  63. self:UIClose()
  64. end
  65. function UIOptionalGiftView:OnClickSureBtn()
  66. local lastIdx = self.controller:GetSelectIdx()
  67. local errorCode = self.controller:SendOpenGiftReq()
  68. if errorCode == 0 then
  69. if lastIdx then
  70. self.scrollView.loopGridView:RefreshItemByItemIndex(lastIdx - 1)
  71. end
  72. self:RefreshSureBtnState()
  73. else
  74. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  75. end
  76. end
  77. function UIOptionalGiftView:OnClickItemBtn(_, params)
  78. if not params then return end
  79. local idx = params[0]
  80. local itemData = params[1]
  81. if not idx or not itemData then
  82. return
  83. end
  84. local lastIdx = self.controller:GetSelectIdx()
  85. if not self.controller:SetSelectIdx(idx) then
  86. return
  87. end
  88. if lastIdx then
  89. self.scrollView.loopGridView:RefreshItemByItemIndex(lastIdx - 1)
  90. end
  91. self.scrollView.loopGridView:RefreshItemByItemIndex(idx - 1)
  92. self:RefreshSureBtnState()
  93. end
  94. function UIOptionalGiftView:RefreshData()
  95. local num = self.controller:GetSelectCfgIdNum()
  96. self.scrollView.loopGridView:RefreshListByIndex(num, 0)
  97. local cfgData = self.controller:GetCfgData()
  98. self.textTitle.text.text = cfgData and string.formatbykey(cfgData.Name) or ''
  99. self:RefreshSureBtnState()
  100. self:RefreshDes()
  101. end
  102. function UIOptionalGiftView:RefreshSureBtnState()
  103. self.btn_OK.button.interactable = (self.controller:GetSelectIdx() ~= nil)
  104. end
  105. function UIOptionalGiftView:RefreshDes()
  106. self.decomposeDsc.uILocalizeScript:SetContentAndValues('DscChooseOne', {self.controller:GetOwnResCountByItemId()})
  107. end
  108. function UIOptionalGiftView:GetItemByRowColumn(gridView, itemIndex, row, column)
  109. local idx = itemIndex + 1
  110. local itemData = self.controller:GetSelectItemData(idx)
  111. if not itemData or not itemData.cfgId or not itemData.num or itemData.num <= 0 then
  112. return nil
  113. end
  114. local item = gridView:NewListViewItem('GiftListItem')
  115. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'GiftListItem', item.gameObject)
  116. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(itemData.cfgId)
  117. if itemCfgData then
  118. itemlua.textName.text.text = string.formatbykey(itemCfgData.Name)
  119. itemlua.iconSmallItem:SetActive(true)
  120. CommonUtil.UpdateItemPrefab(self, itemlua.iconSmallItem, itemData, Enum.ItemIEnterType.Bag, self, self.ShowItemTips)
  121. else
  122. itemlua.textName.text.text = ''
  123. itemlua.iconSmallItem:SetActive(false)
  124. end
  125. itemlua.selected:SetActive(self.controller:GetSelectIdx() == idx)
  126. self.uiBase:AddButtonUniqueEventListener(itemlua.button, self, self.OnClickItemBtn, idx, itemData)
  127. return item
  128. end
  129. function UIOptionalGiftView:ShowItemTips(_, params)
  130. local data = params[0]
  131. ManagerContainer.LuaUIMgr:OpenTips(data)
  132. end
  133. return UIOptionalGiftView