123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- ---@class KLPreviewPanel:UIKmlLuaPanelBase
- ---@field view KLPreviewPanelView
- local KLPreviewPanel = class(UIKmlLuaPanelBase)
- ---创建时调用一次
- function KLPreviewPanel:Init()
- self.onClickCfgId = -1
- self.selectid = 0
- self.previewCreatList = {}
- self.previewCreatListIndex = 0
- SL.HideMainPanel()
- --GetPreviewData
- end
- function KLPreviewPanel:DataListItemCountFunc()
- return table.count(self.Info)
- end
- function KLPreviewPanel:DataListItemGetFunc(realIndex)
- end
- function KLPreviewPanel:DataListItemInitFunc(realIndex, kmlcontrol)
- end
- function KLPreviewPanel:DataListItemUpdateFunc(realIndex, kmlcontrol)
- local btn = GUI:GetChildControl(self.view.previewlist,realIndex,'toggle') --self.view.previewlist:GetChildControl(realIndex, 'toggle')
- local red = GUI:GetChildControl(self.view.previewlist,realIndex,"red") --self.view.previewlist:GetChildControl(realIndex, "red")
-
- self.btn[realIndex] = btn
- GUI:AddOnClickEvent(self.btn[realIndex], self, function()
- self:LoadPanel(realIndex)
- end)
- if self.Info[realIndex + 1]["red"] == 1 then
- GUI:SetActive(red, true)
- else
- GUI:SetActive(red, false)
- end
- local testtext = GUI:GetChildControl(self.view.previewlist,realIndex,"test") --self.view.previewlist:GetChildControl(realIndex, "test")
- GUI:Text_setString(testtext, "玩法预告")
- end
- ---创建或者刷新界面数据时调用
- function KLPreviewPanel:Refresh()
- self.previewRewardInfo = SL:TaskInfo_GetPreviewRewardInfo()
- if not self.cfgInfo then
- self.cfgInfo = SL:GetConfigTable("cfg_preview")
- end
- self.Info = self:LoadInfo()
- if #self.Info == 0 then
- GUI:UIPanel_Close("dev/ui/Preview/Panel/KLPreview/KLPreviewPanel")
- SL.ShowMainPanel()
- return
- end
- self.btn = {}
- GUI:DataListInitData(self.view.previewlist, function()
- return self:DataListItemCountFunc()
- end, function(realIndex)
- return self:DataListItemGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:DataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- GUI:DataListUpdateData(self.view.previewlist,_,function()
- for i, v in pairs(self.btn) do
- if i == self.selectid - 1 then
- GUI:Button_loadTextureNormal(v, "one_button_select_bg", "Atlas/UITradePanel.spriteatlas")
- else
- GUI:Button_loadTextureNormal(v, "one_button_bg", "Atlas/UITradePanel.spriteatlas")
- end
- end
- end)
- self:LoadPanel(0)
- self.onClickCfgId = -1
- end
- ---注册UI事件和服务器消息
- function KLPreviewPanel:RegistEvents()
- GUI:AddOnClickEvent(self.view.closeBtn, self, self.ClosePreviewPanel)
- SL:RegisterLuaNetMsg(MessageDef.ResPreviewRewardInfoMessage, self.ResPreviewRewardInfoMessage, self)
- end
- function KLPreviewPanel:Close()
- SL:UnSchedule(self.maskSchedule)
- SL.ShowMainPanel()
- SL:UnRegisterLuaNetMsg(MessageDef.ResPreviewRewardInfoMessage, self.ResPreviewRewardInfoMessage, self)
- end
- function KLPreviewPanel:LoadPanel(index)
- self.selectid = index + 1
- GUI:SetActive(self.view.receive_btn, true)
- GUI:SetActive(self.view.receive_text, false)
- for i, v in pairs(self.btn) do
- if i == index then
- GUI:Button_loadTextureNormal(v, "one_button_select_bg", "Atlas/UITradePanel.spriteatlas")
- else
- GUI:Button_loadTextureNormal(v, "one_button_bg", "Atlas/UITradePanel.spriteatlas")
- end
- end
- -- 加载步骤:根据索引读表,解析,对应信息,显示
- local data = self.Info[index + 1]
- if not data then
- data = {}
- end
- self.previewCreatList = {}
- self.previewCreatListIndex = 0
- GUI:DataListInitData(self.view.contentlist, function()
- return self:DataContentListCountFunc()
- end, function(realIndex)
- return self:DataContentListGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:DataContentListInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataContentListUpdateFunc(realIndex, kmlcontrol)
- end)
- GUI:DataListUpdateData(self.view.contentlist,nil,function()
- self:InitSmall_TittleList()
- end)
- self.cfgid = data["id"]
- local completionLevel = data["completionLevel"]
- if SL:MeData_GetLevel() >= completionLevel then
- if not self.previewRewardInfo[self.cfgid] then
- GUI:Button_setTitleText(self.view.receive_btn, "领取")
- GUI:AddOnClickEvent(self.view.receive_btn, self, self.Receive)
- else
- GUI:Button_setTitleText(self.view.receive_btn, "前往")
- GUI:AddOnClickEvent(self.view.receive_btn, self, function()
- self.GoToPanel(data)
- end)
- end
- else
- GUI:SetActive(self.view.receive_btn, false)
- str = "达到" .. completionLevel .. "解锁"
- GUI:SetActive(self.view.receive_text, true)
- if str then
- GUI:Text_setString(self.view.receive_text, str)
- end
- end
- if data.item then
- --GUI:Item_setItemId(self.view.receive_item,data.item[1])
- GUI:Item_UpdataData(self.view.receive_item, {
- itemid = data.item[1],
- itemcount = data.item[2]
- })
- GUI:AddOnClickEvent(self.view.clickItem, self, function()
- SL:OpenTips("", data.item[1])
- end)
- --SL:OpenTips("",data.item[1])
- end
- end
- function KLPreviewPanel:LoadInfo()
- --拿信息,根据信息排序
- local data = {}
- local complete = {} -- 可领取
- local done = {} -- 已完成
- local incomplete = {} -- 未达成
- for k, v in pairs(self.cfgInfo) do
- local showinfo = v
- showinfo["red"] = 0
- if SL:MeData_GetLevel() >= showinfo.showLevel then
- if SL:MeData_GetLevel() >= showinfo.completionLevel then
- if self.previewRewardInfo[showinfo.id] then
- --已完成
- if SL:MeData_GetLevel() < showinfo.hideLevel then
- table.insert(done, showinfo)
- end
- else
- -- 可领取未领取
- showinfo["red"] = 1
- table.insert(complete, showinfo)
- end
- else
- table.insert(incomplete, showinfo)
- end
- end
- end
- table.sort(complete, function(a, b)
- return a.completionLevel < b.completionLevel
- end)
- table.sort(done, function(a, b)
- return a.completionLevel < b.completionLevel
- end)
- table.sort(incomplete, function(a, b)
- return a.completionLevel < b.completionLevel
- end)
- for i = 1, #complete do
- table.insert(data, complete[i])
- end
- for i = 1, #incomplete do
- table.insert(data, incomplete[i])
- end
- for i = 1, #done do
- table.insert(data, done[i])
- end
- return data
- end
- function KLPreviewPanel:Receive()
- if self.onClickCfgId == self.cfgid then
- SL:MessageTip({ id = 501 })
- return
- end
- self.onClickCfgId = self.cfgid
- SL:ReqReceivePreviewRewardMessage(self.cfgid)
- if self.maskSchedule then
- SL:UnSchedule(self.maskSchedule)
- end
- self.maskSchedule = SL:ScheduleOnce(0.5, function()
- self.onClickCfgId = -1
- end)
- end
- function KLPreviewPanel:ClosePreviewPanel()
- GUI:UIPanel_Close("dev/ui/Preview/Panel/KLPreview/KLPreviewPanel")
- SL.ShowMainPanel()
- end
- function KLPreviewPanel.GoToPanel(data)
- if data.openPanel[1] and not string.isNullOrEmpty(data.openPanel[1][1]) then
- GUI:UIPanel_Close("dev/ui/Preview/Panel/KLPreview/KLPreviewPanel")
- local uipath = data.openPanel[1][1]
- local args = data.openPanel[1][2]
- GUI:UIPanel_Open(uipath, nil, nil, args)
- SL:HideMainPanel()
- end
- --if data.Panel then
- -- GUI:UIPanel_Open(data.Panel,nil,nil,)
- --end
- end
- function KLPreviewPanel:DataContentListCountFunc()
- return table.count(self.Info[self.selectid]["name"])
- end
- function KLPreviewPanel:DataContentListGetFunc(realIndex)
- end
- function KLPreviewPanel:DataContentListInitFunc(realIndex, kmlcontrol)
- SL:Log('DataListItemInitFunc' .. tostring(realIndex))
- end
- function KLPreviewPanel:DataContentListUpdateFunc(realIndex, kmlcontrol)
- local nametext = GUI:GetChildControl(self.view.contentlist,realIndex,'preview_name') --self.view.contentlist:GetChildControl(realIndex, 'preview_name')
- local data = self.Info[self.selectid]
- local name = data["name"][realIndex + 1][1]
- if name then
- GUI:Text_setString(nametext, name)
- end
- local small_tittlelist = GUI:GetChildControl(self.view.contentlist,realIndex,'small_tittlelist') --self.view.contentlist:GetChildControl(realIndex, 'small_tittlelist')
- self.previewCreatList[realIndex + 1] = small_tittlelist
- --self.preview_content = small_tittlelist
- --self.preview_name = realIndex + 1
-
- end
- function KLPreviewPanel:InitSmall_TittleList()
- self.previewCreatListIndex = self.previewCreatListIndex + 1
- if not self.previewCreatList[self.previewCreatListIndex] then
- return
- end
- GUI:DataListInitData(self.previewCreatList[self.previewCreatListIndex], function()
- return self:DataTittleListCountFunc()
- end, function(realIndex)
- return self:DataTittleListGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:DataTittleListInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataTittleListUpdateFunc(realIndex, kmlcontrol)
- end)
- GUI:DataListUpdateData(self.previewCreatList[self.previewCreatListIndex],nil,function()
- self:RefreshSmall_TittleList(self.previewCreatListIndex - 1)
- self:InitSmall_TittleList()
- end)
- end
- function KLPreviewPanel:RefreshSmall_TittleList(index)
- local _, sizey = GUI:getSizeDelta(GUI:GetChildControl(self.view.contentlist,index,'preview_name_img')) --(self.view.contentlist:GetChildControl(realIndex, 'preview_name_img'))
- for i = 0, table.count(self.Info[self.selectid]["describe"][index + 1]) do
- local textlayout1 = GUI:GetChildControl(self.view.contentlist,index,"textlayout1") --self.view.contentlist:GetChildControl(realIndex, "textlayout1")
- sizey = sizey + GUI:getSizeDelta(textlayout1)
- end
- local content_layout = GUI:GetChildControl(self.view.contentlist,index,"content_layout")--self.view.contentlist:GetChildControl(realIndex, "content_layout")
- GUI:setContentSize(content_layout, 730, sizey + 12)
- end
- function KLPreviewPanel:DataTittleListCountFunc()
- return self.Info[self.selectid]["describe"][self.previewCreatListIndex] and table.count(self.Info[self.selectid]["describe"][self.previewCreatListIndex])
- end
- function KLPreviewPanel:DataTittleListGetFunc(realIndex)
- end
- function KLPreviewPanel:DataTittleListInitFunc(realIndex, kmlcontrol)
- --SL:Log('DataListItemInitFunc' .. tostring(realIndex))
- end
- function KLPreviewPanel:DataTittleListUpdateFunc(realIndex, kmlcontrol)
- local data = self.Info[self.selectid]["describe"][self.previewCreatListIndex][realIndex + 1]
- local content = self.previewCreatList[self.previewCreatListIndex]
- local preview_tittle = GUI:GetChildControl(content,realIndex,'preview_tittle') --self.preview_content:GetChildControl(realIndex, 'preview_tittle')
- local str = data[1]
- if str then
- GUI:Text_setString(preview_tittle, str)
- end
- local preview_text = GUI:GetChildControl(content,realIndex,'preview_text') --self.preview_content:GetChildControl(realIndex, 'preview_text')
- str = data[2]
- if str then
- GUI:Text_setString(preview_text, str)
- end
- local textlayout1 = GUI:GetChildControl(content,realIndex,"textlayout1") --self.preview_content:GetChildControl(realIndex, "textlayout1")
- local preview_text_layout = GUI:GetChildControl(content,realIndex,"preview_text_layout")--self.preview_content:GetChildControl(realIndex, "preview_text_layout")
- local _, textsizey = GUI:getSizeDelta(preview_text)
- GUI:setContentSize(preview_text_layout, 700, textsizey)
- local _, imagesizey = GUI:getSizeDelta (GUI:GetChildControl(content,realIndex,'preciew_icon_img1'))--(self.preview_content:GetChildControl(realIndex, 'preciew_icon_img1'))
- GUI:setContentSize(textlayout1, 730, textsizey + imagesizey + 12)
- end
- ---@param message RoleProtos.ReceivePreviewRewardRes @预告奖励领取信息 响应
- function KLPreviewPanel:ResPreviewRewardInfoMessage(_, message)
- local data = {}
- for k, v in pairs(message.receiveInfos) do
- self.previewRewardInfo[v.id] = v.isReceive
- local hideLeveltable = SL:GetConfig("cfg_preview", v.id, "id")
- local hideLevel = hideLeveltable["hideLevel"]
- if SL:MeData_GetLevel() >= hideLevel then
- table.insert(data, v.id)
- end
- end
- local itemdata = SL:GetConfig("cfg_preview", self.cfgid, "id").item
- local items = {}
- items[itemdata[1]] = itemdata[2]
- --SL:OpenRewardTips(items,0)
- SL:onLUAEvent(LUA_EVENT_PREVIEW_OVER, data)
-
- self:Refresh()
- end
- return KLPreviewPanel
|