---@class KLOpenServiceWingTaskPanel:UIKmlLuaPanelBase ---@field view KLOpenServiceWingTaskPanelView local KLOpenServiceWingTaskPanel = class(UIKmlLuaPanelBase) local this = KLOpenServiceWingTaskPanel function this:AsyncLoadUI() end ---创建时调用一次 function this:Init() self.allTaskItem = {} self.curSelectTaskMap = {} GUI:DataListInitData(self.view.taskDataList, function() return self:TaskDataListItemCountFunc() end, function(realIndex) return self:TaskDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:TaskDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:TaskDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.allChapterItem = {} self.allChapterCfg = {} GUI:DataListInitData(self.view.chapterDataList, function() return self:ChapterDataListItemCountFunc() end, function(realIndex) return self:ChapterDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:ChapterDataListItemUpdateFunc(realIndex, kmlcontrol) end) self:InitCfg() end function this:InitCfg() self.allChapterCfg = SL:GetConfigTable("cfg_wings") end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.btn_Get, self, self.GetOnClick) SL:RegisterLUAEvent(LUA_EVENT_WING_TASK_CHANGE, self.RefreshMain, self) SL:RegisterLUAEvent(LUA_EVENT_WING_CHAPTER_CHANGE, self.Refresh, self) end function this:GetOnClick() local cfg = SL:GetConfig("cfg_wings", self.selectChapter) SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECEIVE_WINGS_CHAPTER_AWARD, cfg.groupID) end ---界面显示时调用一次 function this:Show() end ---创建或者刷新界面数据时调用 function this:Refresh() if InfoManager.wingTaskInfo.curChapter==-1 then --任务都完成了 self.selectChapter = self.selectChapter or 1 else self.selectChapter = InfoManager.wingTaskInfo.curChapter end GUI:DataListUpdateData(self.view.chapterDataList) self:RefreshMain() end function this:RefreshMain() local state = InfoManager.wingTaskInfo.wingChapterState[self.selectChapter] if state then self.selectUnlockChapter = self.selectChapter end if self.selectUnlockChapter then self.curSelectTaskMap = {} local accept = {} local finish = {} local isGet = {} for key, value in pairs(InfoManager.wingTaskInfo.wingTaskMap[self.selectUnlockChapter]) do if value.state == E_ChapterState.FINISH then table.insert(finish, value) elseif value.state == E_ChapterState.ACCPT then table.insert(accept, value) else table.insert(isGet, value) end end table.AddRanage(self.curSelectTaskMap, finish) table.AddRanage(self.curSelectTaskMap, accept) table.AddRanage(self.curSelectTaskMap, isGet) GUI:DataListUpdateData(self.view.taskDataList) end GUI:setVisible(self.view.btn_Get, state and state == E_ChapterState.FINISH) GUI:setVisible(self.view.chapter, not state or state == E_ChapterState.ACCPT) GUI:setVisible(self.view.img_Get, state and state == E_ChapterState.REWARD) GUI:Text_setString(self.view.txt_chapter, tostring(self.selectChapter)) self:RefreshModel() end function this:RefreshModel() local cfg = SL:GetConfig("cfg_wings", self.selectChapter) GUI:Item_setItemId(self.view.EquipItem, cfg.rewardItem[1]) GUI:Item_Scale(self.view.EquipItem, 150) GUI:AddOnClickEvent(self.view.EquipItem, self, function() SL:OpenTips(nil, cfg.rewardItem[1]) end) end function this:Close() end function this:TaskDataListItemCountFunc() return #self.curSelectTaskMap end function this:TaskDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/WingTask/Item/KLOpenServiceWingTask/KLOpenServiceWingTaskItem", self.view.taskDataList, self, {}, true) self.allTaskItem[item.view.root] = item return item.view.root end function this:TaskDataListItemInitFunc(realIndex, kmlcontrol) end function this:TaskDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.curSelectTaskMap[realIndex + 1] self.allTaskItem[kmlcontrol]:RefreshItem(data) end local PosArry = { { -159, 50 }, { -14, -11 }, { 136, 50 }, } function this:ChapterDataListItemCountFunc() return table.count(PosArry) end function this:ChapterDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open( "dev/outui/WingTask/Item/KLOpenServiceWingTaskChapter/KLOpenServiceWingTaskChapterItem", self.view.chapterDataList, self, {}, true) GUI:setPosition(item.view.root, PosArry[realIndex + 1][1], PosArry[realIndex + 1][2]) self.allChapterItem[item.view.root] = item return item.view.root end function this:ChapterDataListItemUpdateFunc(realIndex, kmlcontrol) -- local data = self.allChapterCfg[realIndex + 1] self.allChapterItem[kmlcontrol]:RefreshItem(realIndex + 1, self.ChapterOnClick, self) end function this:ChapterOnClick(index) self.selectChapter = index for key, ctr in pairs(self.allChapterItem) do ctr:RefreshSelectState() end self:RefreshMain() end return this