123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- ---@class KLActivityPreviewPanel:UIKmlLuaPanelBase
- ---@field view KLActivityPreviewPanelView
- ---@field bgLessHeight number
- ---@field bgMoreHeight number
- ---@field moreHeight number
- ---@field moreHeight number
- ---@field all_item KLActivityPreviewItem[]
- ---@field dataList {leftTime:number,id:number,open:boolean,cfg:cfg_activity_rule_column,isPreview:boolean}
- local KLActivityPreviewPanel = class(UIKmlLuaPanelBase)
- local this = KLActivityPreviewPanel
- ---创建时调用一次
- function this:Init()
- --self.activityPool = TablePool()
- --self.activityList = {}
- self.all_item = {}
-
- self.listLessHeight = 75
- self.listMoreHeight = 75 * 3
- self.listWidth = GUI:GetControlWidth(self.view.scrollview)
- self.bgLessHeight = 130
- self.bgMoreHeight = 130 + 75 * 2
- self.bgWidth = GUI:GetControlWidth(self.view.bg)
- GUI:DataListInitData(self.view.previewItems, function()
- return self:BtnDataListItemCountFunc()
- end, function(realIndex)
- return self:BtnDataListItemGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:BtnDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:BtnDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- --self:RefreshTimeText()
- --if not self.timer then
- -- self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
- --end
- local panel2 = GUI:GetUI("dev/ui/Monster/Panel/KLMonsterMapPoint/KLMonsterMapPointPanel")
- if panel2 then
- panel2:HidePanel()
- end
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.btnClose, self, self.OnClickClose)
- GUI:AddOnClickEvent(self.view.btnOpenPreview, self, self.OnClickOpenPreview)
- GUI:AddOnClickEvent(self.view.btnMoreActivity, self, self.OnClickMoreActivity)
- GUI:AddOnClickEvent(self.view.btnLessActivity, self, self.OnClickLessActivity)
- GUI:AddOnClickEvent(self.view.btnHidePreview, self, self.OnClickClose)
- SL:RegisterLUAEvent(LUA_EVENT_ACTIVITYPREVIEW_CHANGE, self.InitActivityItem, self)
- SL:RegisterLUAEvent(LUA_EVENT_LEVELCHANGE, self.InitActivityItem, self)
- end
- --打开活动预告
- function this:OnClickOpenPreview()
- GUI:setVisible(self.view.bgRoot, true)
- --GUI:setVisible(self.view.btnHidePreview, true)
- GUI:setVisible(self.view.btnOpenPreview, false)
- local panel2 = GUI:GetUI("dev/ui/Monster/Panel/KLMonsterMapPoint/KLMonsterMapPointPanel")
- if panel2 then
- panel2:HidePanel()
- end
- end
- --点进隐藏更多活动
- function this:OnClickLessActivity()
- GUI:setVisible(self.view.btnMoreActivity, true)
- GUI:setVisible(self.view.btnLessActivity, false)
- GUI:setContentSize(self.view.bg, self.bgWidth, self.bgLessHeight)
- GUI:setContentSize(self.view.scrollview, self.listWidth, self.listLessHeight)
- end
- --点击更多活动
- function this:OnClickMoreActivity()
- GUI:setVisible(self.view.btnMoreActivity, false)
- GUI:setVisible(self.view.btnLessActivity, true)
- GUI:setContentSize(self.view.bg, self.bgWidth, self.bgMoreHeight)
- GUI:setContentSize(self.view.scrollview, self.listWidth, self.listMoreHeight)
- end
- --关闭活动预告
- function this:OnClickClose()
- GUI:setVisible(self.view.bgRoot, false)
- --GUI:setVisible(self.view.btnHidePreview, false)
- GUI:setVisible(self.view.btnOpenPreview, true)
- end
- --关闭活动预告
- function this:HideActivity()
- GUI:setVisible(self.view.bgRoot, false)
- GUI:setVisible(self.view.btnOpenPreview, false)
- -- GUI:setVisible(self.view.btnHidePreview, false)
- end
- --关闭活动预告
- function this:ShowActivity()
- GUI:setVisible(self.view.bgRoot, true)
- --GUI:setVisible(self.view.btnHidePreview, true)
- GUI:setVisible(self.view.btnOpenPreview, false)
- end
- function this:BtnDataListItemCountFunc()
- return table.count(self.dataList)
- end
- function this:BtnDataListItemGetFunc(realIndex)
- ---@type KLActivityPreviewItem
- local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLActivityPreview/KLActivityPreviewItem", self.view.previewItems, self, nil, true)
-
- self.all_item[item.view.root] = item
- return item.view.root
- end
- function this:BtnDataListItemInitFunc(realIndex, kmlcontrol)
- end
- function this:BtnDataListItemUpdateFunc(realIndex, kmlcontrol)
- local tempData = {
- index = realIndex + 1,
- data = self.dataList[realIndex + 1]
- }
-
- self.all_item[kmlcontrol]:InitData(tempData.index,tempData.data)
- self.all_item[kmlcontrol]:RefreshItem()
- end
- function this:InitActivityItem()
- self.dataList = {}
- for k, v in pairs(InfoManager.activityPreviewInfo.previewInfo) do
- if SL:MeData_GetLevel() >= v.cfg.level then
- if v.open and SL:MeData_GetLevel() >= v.cfg.level then
- --活动开启中
- if Time.GetServerTime() < v.leftTime then
- table.insert(self.dataList,v)
- end
- else
- if v.isPreview then
- table.insert(self.dataList,v)
- end
- end
- end
- end
- if table.count(self.dataList) > 0 then
- GUI:SetActive(self.view.panelRoot, true)
- self:RefreshTimeText()
- if not self.timer then
- --self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
- self.timer = SL:Schedule(self.timer,0,1,-1,self.RefreshTimeText,self)
- end
- elseif table.count(self.dataList) <= 0 then
- GUI:SetActive(self.view.panelRoot, false)
- if self.timer then
- --Timer.Stop(self.timer)
- SL:UnSchedule(self.timer)
- self.timer = nil
- end
- end
- end
- function this:InitActivityItem_2()
- self:Recycle()
- for k, v in pairs(InfoManager.activityPreviewInfo.previewInfo) do
- ---@type KLActivityPreviewItem
- local item = self.activityPool:Pop()
- if not next(item) then
- item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLActivityPreview/KLActivityPreviewItem", self.view.previewItems, self, nil, true)
- end
- self.activityList[k] = item
- item:InitData(k, v)
- item:RefreshItem()
- if SL:MeData_GetLevel() >= v.cfg.level then
- if v.open and SL:MeData_GetLevel() >= v.cfg.level then
- --活动开启中
- if Time.GetServerTime() < v.leftTime then
- item:SetActiveUI(true)
- else
- item:SetActiveUI(false)
- self.activityPool:Push(item)
- end
- else
- if v.isPreview then
- item:SetActiveUI(true)
- else
- item:SetActiveUI(false)
- self.activityPool:Push(item)
- end
- end
- else
- item:SetActiveUI(false)
- self.activityPool:Push(item)
- end
- end
- self:RefreshTimeText()
- if not self.timer then
- --self.timer = Timer.StartLoopForever(1, self.RefreshTimeText, self)
- self.timer = SL:Schedule(self.timer,0,1,-1,self.RefreshTimeText,self)
- end
- end
- function this:RefreshTimeText()
- GUI:DataListUpdateData(self.view.previewItems)
- --local isHaveActivityOpen = false
- --for k, v in pairs(self.activityList) do
- -- if SL:MeData_GetLevel() >= v.data.cfg.level then
- -- if v.data.open then
- -- ---结束了
- -- if Time.GetServerTime() > v.data.leftTime then
- -- if v:GetActiveUI() then
- -- v:SetActiveUI(false)
- -- self.activityPool:Push(v)
- -- end
- -- else
- -- if not v:GetActiveUI() then
- -- v:SetActiveUI(true)
- -- end
- -- v:RefreshTimeText()
- -- isHaveActivityOpen = true
- -- end
- -- else
- -- local previewTime = v.data.leftTime - v.data.cfg.specialOpen * 1000
- -- if Time.GetServerTime() > previewTime and Time.GetServerTime() < v.data.leftTime then
- -- if not v:GetActiveUI() then
- -- v:SetActiveUI(true)
- -- end
- -- isHaveActivityOpen = true
- -- v:RefreshTimeText()
- -- else
- -- if v:GetActiveUI() then
- -- v:SetActiveUI(false)
- -- self.activityPool:Push(v)
- -- end
- -- end
- -- end
- -- else
- -- if v:GetActiveUI() then
- -- v:SetActiveUI(false)
- -- self.activityPool:Push(v)
- -- end
- -- end
- --end
- --if table.count(self.dataList) and not GUI:getVisible(self.view.panelRoot) then
- -- GUI:SetActive(self.view.panelRoot, true)
- --elseif not isHaveActivityOpen and GUI:getVisible(self.view.panelRoot) then
- -- GUI:SetActive(self.view.panelRoot, false)
- --end
- end
- function this:Recycle()
- for _, v in pairs(self.activityList) do
- v:SetActiveUI(false)
- self.activityPool:Push(v)
- end
- end
- function this:Close()
- --self:Recycle()
- --self.activityPool = TablePool()
- --self.activityList = {}
- if self.timer then
- --Timer.Stop(self.timer)
- SL:UnSchedule(self.timer)
- self.timer = nil
- end
- end
- return this
|