KLShapeShiftCardShopPanel.lua 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. ---@class KLShapeShiftCardShopPanel:UIKmlLuaPanelBase
  2. ---@field view KLShapeShiftCardShopPanelView
  3. local KLShapeShiftCardShopPanel = class(UIKmlLuaPanelBase)
  4. local this = KLShapeShiftCardShopPanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. GUI:DataListInitData(self.view.datalist_currency,
  10. function()
  11. return self:CurrentCountFunc()
  12. end,
  13. nil,
  14. nil,
  15. function(realIndex, kmlcontrol)
  16. return self:CurrentUpdateFunc(realIndex, kmlcontrol)
  17. end)
  18. GUI:DataListInitData(self.view.card_datalist_1,
  19. function()
  20. return self:Item_1CountFunc()
  21. end,
  22. function(realIndex)
  23. return self:Item_1GetFunc(realIndex)
  24. end,
  25. nil,
  26. function(realIndex, kmlCtrl)
  27. return self:Item_1UpdateFunc(realIndex, kmlCtrl)
  28. end)
  29. GUI:DataListInitData(self.view.card_datalist_2,
  30. function()
  31. return self:Item_2CountFunc()
  32. end,
  33. function(realIndex)
  34. return self:Item_2GetFunc(realIndex)
  35. end,
  36. nil,
  37. function(realIndex, kmlCtrl)
  38. return self:Item_2UpdateFunc(realIndex, kmlCtrl)
  39. end)
  40. self.Items_1 = {}
  41. self.Items_2 = {}
  42. end
  43. function this:CurrentCountFunc()
  44. return #self.currencyList
  45. end
  46. function this:CurrentUpdateFunc(realIndex)
  47. local data = self.currencyList[realIndex + 1]
  48. local item_tokens = GUI:GetChildControl(self.view.datalist_currency, realIndex, "item_tokens")
  49. local text_tokens_num = GUI:GetChildControl(self.view.datalist_currency, realIndex, "text_tokens_num")
  50. local btn_tokens_add = GUI:GetChildControl(self.view.datalist_currency, realIndex, "btn_tokens_add")
  51. GUI:Item_setItemId(item_tokens, data)
  52. local count = SL:GetBagItemCount(data)
  53. self.currencyCount[data] = count
  54. GUI:Text_setString(text_tokens_num, tostring(count))
  55. GUI:AddOnClickEvent(item_tokens, self, self.BtnTipsOnClick, data)
  56. GUI:AddOnClickEvent(btn_tokens_add, self, self.BtnAddOnClick, data)
  57. end
  58. function this:Item_1CountFunc()
  59. return #self.allShopItemTbl[self.allTypeTbl[1]]
  60. end
  61. function this:Item_1GetFunc()
  62. local item = GUI:UIPanel_Open("dev/outui/ShapeShiftCard/Item/KLShapeShiftCardShop/KLShapeShiftCardShopItem", self.view.card_datalist_1, self, nil, true)
  63. local kmlCtrl = item.view.root
  64. self.Items_1[kmlCtrl] = item
  65. return kmlCtrl
  66. end
  67. ---@param kmlCtrl KingML.KmlControl
  68. function this:Item_1UpdateFunc(realIndex, kmlCtrl)
  69. local item = self.Items_1[kmlCtrl]
  70. local info = self.allShopItemTbl[self.allTypeTbl[1]][realIndex + 1]
  71. item:RefreshUI(info)
  72. end
  73. function this:Item_2CountFunc()
  74. return #self.allShopItemTbl[self.allTypeTbl[2]]
  75. end
  76. function this:Item_2GetFunc()
  77. local item = GUI:UIPanel_Open("dev/outui/ShapeShiftCard/Item/KLShapeShiftCardShop/KLShapeShiftCardShopItem", self.view.card_datalist_2, self, nil, true)
  78. local kmlCtrl = item.view.root
  79. self.Items_2[kmlCtrl] = item
  80. return kmlCtrl
  81. end
  82. ---@param kmlCtrl KingML.KmlControl
  83. function this:Item_2UpdateFunc(realIndex, kmlCtrl)
  84. local item = self.Items_2[kmlCtrl]
  85. local info = self.allShopItemTbl[self.allTypeTbl[2]][realIndex + 1]
  86. item:RefreshUI(info)
  87. end
  88. function this:BtnAddOnClick(_, cfgid)
  89. SL:CommonItemGetPath(nil, cfgid, nil, nil, self)
  90. end
  91. ---注册UI事件和服务器消息
  92. function this:RegistEvents()
  93. SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER, self.LUA_EVENT_BAG_CHANGE_AFTER, self)
  94. end
  95. ---界面显示时调用一次
  96. function this:Show()
  97. end
  98. ---创建或者刷新界面数据时调用
  99. function this:Refresh()
  100. ---@type cfg_card_shop_column[]
  101. local cfg_card_shop = SL:GetConfigTable("cfg_card_shop")
  102. self.allShopItemTbl = {}
  103. self.allTypeTbl = {}
  104. for _, v in pairs(cfg_card_shop) do
  105. if not self.allShopItemTbl[v.type] then
  106. self.allShopItemTbl[v.type] = {}
  107. self.allTypeTbl[#self.allTypeTbl + 1] = v.type
  108. end
  109. self.allShopItemTbl[v.type][#self.allShopItemTbl[v.type] + 1] = v
  110. end
  111. GUI:DataListUpdateData(self.view.card_datalist_1)
  112. GUI:DataListUpdateData(self.view.card_datalist_2)
  113. self.currencyList = {}
  114. self.currencyCount = {}
  115. local currencyList = string.split(SL:GetConfig("cfg_global", 18001).value, '#')
  116. for _, v in ipairs(currencyList) do
  117. self.currencyList[#self.currencyList + 1] = tonumber(v)
  118. end
  119. GUI:DataListUpdateData(self.view.datalist_currency)
  120. end
  121. function this:BtnTipsOnClick(_, eventData)
  122. SL:OpenTips(nil, eventData)
  123. end
  124. ---实时刷新道具
  125. function this:LUA_EVENT_BAG_CHANGE_AFTER()
  126. local isRefresh = false
  127. for _, v in pairs(self.currencyList) do
  128. if SL:GetBagItemCount(v) ~= self.currencyCount[v] then
  129. isRefresh = true
  130. break
  131. end
  132. end
  133. if isRefresh then
  134. ---刷新商城红点
  135. GUI:DataListUpdateData(self.view.datalist_currency)
  136. GUI:DataListUpdateData(self.view.card_datalist_1)
  137. GUI:DataListUpdateData(self.view.card_datalist_2)
  138. ---@type KLShapeShiftCardMainPanel
  139. local ui = GUI:GetUI("dev/outui/ShapeShiftCard/Panel/KLShapeShiftCardMain/KLShapeShiftCardMainPanel")
  140. if ui then
  141. ui:RefreshMainRedPoint()
  142. end
  143. end
  144. end
  145. function this:Close()
  146. self.Items_1 = nil
  147. self.Items_2 = nil
  148. self.allTypeTbl = nil
  149. self.allShopItemTbl = nil
  150. self.currencyList = nil
  151. self.currencyCount = nil
  152. end
  153. return this