KLActivityPreviewPanel.lua 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. ---@class KLActivityPreviewPanel:UIKmlLuaPanelBase
  2. ---@field view KLActivityPreviewPanelView
  3. ---@field bgLessHeight number
  4. ---@field bgMoreHeight number
  5. ---@field moreHeight number
  6. ---@field moreHeight number
  7. ---@field all_item KLActivityPreviewItem[]
  8. ---@field dataList {leftTime:number,id:number,open:boolean,cfg:cfg_activity_rule_column,isPreview:boolean}
  9. local KLActivityPreviewPanel = class(UIKmlLuaPanelBase)
  10. local this = KLActivityPreviewPanel
  11. ---创建时调用一次
  12. function this:Init()
  13. --self.activityPool = TablePool()
  14. --self.activityList = {}
  15. self.all_item = {}
  16. self.listLessHeight = 75
  17. self.listMoreHeight = 75 * 3
  18. self.listWidth = GUI:GetControlWidth(self.view.scrollview)
  19. self.bgLessHeight = 130
  20. self.bgMoreHeight = 130 + 75 * 2
  21. self.bgWidth = GUI:GetControlWidth(self.view.bg)
  22. GUI:DataListInitData(self.view.previewItems, function()
  23. return self:BtnDataListItemCountFunc()
  24. end, function(realIndex)
  25. return self:BtnDataListItemGetFunc(realIndex)
  26. end, function(realIndex, kmlcontrol)
  27. return self:BtnDataListItemInitFunc(realIndex, kmlcontrol)
  28. end, function(realIndex, kmlcontrol)
  29. return self:BtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  30. end)
  31. end
  32. ---创建或者刷新界面数据时调用
  33. function this:Refresh()
  34. --self:RefreshTimeText()
  35. --if not self.timer then
  36. -- self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
  37. --end
  38. local panel2 = GUI:GetUI("dev/ui/Monster/Panel/KLMonsterMapPoint/KLMonsterMapPointPanel")
  39. if panel2 then
  40. panel2:HidePanel()
  41. end
  42. end
  43. ---注册UI事件和服务器消息
  44. function this:RegistEvents()
  45. GUI:AddOnClickEvent(self.view.btnClose, self, self.OnClickClose)
  46. GUI:AddOnClickEvent(self.view.btnOpenPreview, self, self.OnClickOpenPreview)
  47. GUI:AddOnClickEvent(self.view.btnMoreActivity, self, self.OnClickMoreActivity)
  48. GUI:AddOnClickEvent(self.view.btnLessActivity, self, self.OnClickLessActivity)
  49. GUI:AddOnClickEvent(self.view.btnHidePreview, self, self.OnClickClose)
  50. SL:RegisterLUAEvent(LUA_EVENT_ACTIVITYPREVIEW_CHANGE, self.InitActivityItem, self)
  51. SL:RegisterLUAEvent(LUA_EVENT_LEVELCHANGE, self.InitActivityItem, self)
  52. end
  53. --打开活动预告
  54. function this:OnClickOpenPreview()
  55. GUI:setVisible(self.view.bgRoot, true)
  56. --GUI:setVisible(self.view.btnHidePreview, true)
  57. GUI:setVisible(self.view.btnOpenPreview, false)
  58. local panel2 = GUI:GetUI("dev/ui/Monster/Panel/KLMonsterMapPoint/KLMonsterMapPointPanel")
  59. if panel2 then
  60. panel2:HidePanel()
  61. end
  62. end
  63. --点进隐藏更多活动
  64. function this:OnClickLessActivity()
  65. GUI:setVisible(self.view.btnMoreActivity, true)
  66. GUI:setVisible(self.view.btnLessActivity, false)
  67. GUI:setContentSize(self.view.bg, self.bgWidth, self.bgLessHeight)
  68. GUI:setContentSize(self.view.scrollview, self.listWidth, self.listLessHeight)
  69. end
  70. --点击更多活动
  71. function this:OnClickMoreActivity()
  72. GUI:setVisible(self.view.btnMoreActivity, false)
  73. GUI:setVisible(self.view.btnLessActivity, true)
  74. GUI:setContentSize(self.view.bg, self.bgWidth, self.bgMoreHeight)
  75. GUI:setContentSize(self.view.scrollview, self.listWidth, self.listMoreHeight)
  76. end
  77. --关闭活动预告
  78. function this:OnClickClose()
  79. GUI:setVisible(self.view.bgRoot, false)
  80. --GUI:setVisible(self.view.btnHidePreview, false)
  81. GUI:setVisible(self.view.btnOpenPreview, true)
  82. end
  83. --关闭活动预告
  84. function this:HideActivity()
  85. GUI:setVisible(self.view.bgRoot, false)
  86. GUI:setVisible(self.view.btnOpenPreview, false)
  87. -- GUI:setVisible(self.view.btnHidePreview, false)
  88. end
  89. --关闭活动预告
  90. function this:ShowActivity()
  91. GUI:setVisible(self.view.bgRoot, true)
  92. --GUI:setVisible(self.view.btnHidePreview, true)
  93. GUI:setVisible(self.view.btnOpenPreview, false)
  94. end
  95. function this:BtnDataListItemCountFunc()
  96. return table.count(self.dataList)
  97. end
  98. function this:BtnDataListItemGetFunc(realIndex)
  99. ---@type KLActivityPreviewItem
  100. local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLActivityPreview/KLActivityPreviewItem", self.view.previewItems, self, nil, true)
  101. self.all_item[item.view.root] = item
  102. return item.view.root
  103. end
  104. function this:BtnDataListItemInitFunc(realIndex, kmlcontrol)
  105. end
  106. function this:BtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  107. local tempData = {
  108. index = realIndex + 1,
  109. data = self.dataList[realIndex + 1]
  110. }
  111. self.all_item[kmlcontrol]:InitData(tempData.index,tempData.data)
  112. self.all_item[kmlcontrol]:RefreshItem()
  113. end
  114. function this:InitActivityItem()
  115. self.dataList = {}
  116. for k, v in pairs(InfoManager.activityPreviewInfo.previewInfo) do
  117. if SL:MeData_GetLevel() >= v.cfg.level then
  118. if v.open and SL:MeData_GetLevel() >= v.cfg.level then
  119. --活动开启中
  120. if Time.GetServerTime() < v.leftTime then
  121. table.insert(self.dataList,v)
  122. end
  123. else
  124. if v.isPreview then
  125. table.insert(self.dataList,v)
  126. end
  127. end
  128. end
  129. end
  130. if table.count(self.dataList) > 0 then
  131. GUI:SetActive(self.view.panelRoot, true)
  132. self:RefreshTimeText()
  133. if not self.timer then
  134. --self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
  135. self.timer = SL:Schedule(self.timer,0,1,-1,self.RefreshTimeText,self)
  136. end
  137. elseif table.count(self.dataList) <= 0 then
  138. GUI:SetActive(self.view.panelRoot, false)
  139. if self.timer then
  140. --Timer.Stop(self.timer)
  141. SL:UnSchedule(self.timer)
  142. self.timer = nil
  143. end
  144. end
  145. end
  146. function this:InitActivityItem_2()
  147. self:Recycle()
  148. for k, v in pairs(InfoManager.activityPreviewInfo.previewInfo) do
  149. ---@type KLActivityPreviewItem
  150. local item = self.activityPool:Pop()
  151. if not next(item) then
  152. item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLActivityPreview/KLActivityPreviewItem", self.view.previewItems, self, nil, true)
  153. end
  154. self.activityList[k] = item
  155. item:InitData(k, v)
  156. item:RefreshItem()
  157. if SL:MeData_GetLevel() >= v.cfg.level then
  158. if v.open and SL:MeData_GetLevel() >= v.cfg.level then
  159. --活动开启中
  160. if Time.GetServerTime() < v.leftTime then
  161. item:SetActiveUI(true)
  162. else
  163. item:SetActiveUI(false)
  164. self.activityPool:Push(item)
  165. end
  166. else
  167. if v.isPreview then
  168. item:SetActiveUI(true)
  169. else
  170. item:SetActiveUI(false)
  171. self.activityPool:Push(item)
  172. end
  173. end
  174. else
  175. item:SetActiveUI(false)
  176. self.activityPool:Push(item)
  177. end
  178. end
  179. self:RefreshTimeText()
  180. if not self.timer then
  181. --self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
  182. self.timer = SL:Schedule(self.timer,0,1,-1,self.RefreshTimeText,self)
  183. end
  184. end
  185. function this:RefreshTimeText()
  186. GUI:DataListUpdateData(self.view.previewItems)
  187. --local isHaveActivityOpen = false
  188. --for k, v in pairs(self.activityList) do
  189. -- if SL:MeData_GetLevel() >= v.data.cfg.level then
  190. -- if v.data.open then
  191. -- ---结束了
  192. -- if Time.GetServerTime() > v.data.leftTime then
  193. -- if v:GetActiveUI() then
  194. -- v:SetActiveUI(false)
  195. -- self.activityPool:Push(v)
  196. -- end
  197. -- else
  198. -- if not v:GetActiveUI() then
  199. -- v:SetActiveUI(true)
  200. -- end
  201. -- v:RefreshTimeText()
  202. -- isHaveActivityOpen = true
  203. -- end
  204. -- else
  205. -- local previewTime = v.data.leftTime - v.data.cfg.specialOpen * 1000
  206. -- if Time.GetServerTime() > previewTime and Time.GetServerTime() < v.data.leftTime then
  207. -- if not v:GetActiveUI() then
  208. -- v:SetActiveUI(true)
  209. -- end
  210. -- isHaveActivityOpen = true
  211. -- v:RefreshTimeText()
  212. -- else
  213. -- if v:GetActiveUI() then
  214. -- v:SetActiveUI(false)
  215. -- self.activityPool:Push(v)
  216. -- end
  217. -- end
  218. -- end
  219. -- else
  220. -- if v:GetActiveUI() then
  221. -- v:SetActiveUI(false)
  222. -- self.activityPool:Push(v)
  223. -- end
  224. -- end
  225. --end
  226. --if table.count(self.dataList) and not GUI:getVisible(self.view.panelRoot) then
  227. -- GUI:SetActive(self.view.panelRoot, true)
  228. --elseif not isHaveActivityOpen and GUI:getVisible(self.view.panelRoot) then
  229. -- GUI:SetActive(self.view.panelRoot, false)
  230. --end
  231. end
  232. function this:Recycle()
  233. for _, v in pairs(self.activityList) do
  234. v:SetActiveUI(false)
  235. self.activityPool:Push(v)
  236. end
  237. end
  238. function this:Close()
  239. --self:Recycle()
  240. --self.activityPool = TablePool()
  241. --self.activityList = {}
  242. if self.timer then
  243. --Timer.Stop(self.timer)
  244. SL:UnSchedule(self.timer)
  245. self.timer = nil
  246. end
  247. end
  248. return this