---@class KLLevelRewardPanel:UIKmlLuaPanelBase ---@field view KLLevelRewardPanelView local KLLevelRewardPanel = class(UIKmlLuaPanelBase) local this =KLLevelRewardPanel --等级奖励面板 ---创建时调用一次 function this:Init() --上方等级奖励列表 GUI:DataListInitData(self.view.RewardDatalist, function() return self:RewardListCountFunc() end, function(realIndex) return self:RewardListGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:RewardListInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:RewardListUpdateFunc(realIndex, kmlcontrol) end) self.Reward_List_all_item = {} end --region 上方等级奖励列表 function this:RewardListCountFunc() return #self.allLevelData end function this:RewardListGetFunc(realIndex) local cfgData = self.allLevelData[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/LevelReward/Item/KLLevelReward/KLLevelRewardItem",self.view.RewardDatalist,self,cfgData,true) self.Reward_List_all_item[realIndex + 1] = item return item.view.root end function this:RewardListInitFunc(realIndex, kmlcontrol) end function this:RewardListUpdateFunc(realIndex, kmlcontrol) local cfgData = self.allLevelData[realIndex + 1] self.Reward_List_all_item[realIndex + 1]:RefreshItem(cfgData) end --endregion 上方等级奖励列表 ---注册UI事件和服务器消息 function this:RegistEvents() SL:RegisterLUAEvent(LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE, self.LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE, self) end function this:LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE() for index,item in pairs(self.Reward_List_all_item) do local id = item.args.id if InfoManager.openServiceLevelRewardInfo.ShowTypeInfo[id] then item:RefreshShowType(InfoManager.openServiceLevelRewardInfo.ShowTypeInfo[id]) else item:RefreshShowType(OpenServiceLevelReward_ShowType.LevelNotEnough) end end local lastId = self.bottomRewardData.id if InfoManager.openServiceLevelRewardInfo.ShowTypeInfo[lastId] then self.bottom_Reward_item:RefreshShowType(InfoManager.openServiceLevelRewardInfo.ShowTypeInfo[lastId]) else self.bottom_Reward_item:RefreshShowType(OpenServiceLevelReward_ShowType.LevelNotEnough) end end ---界面显示时调用一次 function this:Show() SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_PERSONAL_LEVEL_REWARD_INFO) self:RefreshTimeText() end ---创建或者刷新界面数据时调用 function this:Refresh() if not self.allLevelData then self.allLevelData = {} local cfgs = SL:GetConfigTable("cfg_activity_levelUp") for k,v in ipairs(cfgs) do if k < #cfgs then table.insert(self.allLevelData,v) else self.bottomRewardData = v end end GUI:DataListUpdateData(self.view.RewardDatalist,_,function() self:LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE() end) self.bottom_Reward_item = GUI:UIPanel_Open("dev/outui/LevelReward/Item/KLLevelReward/KLLevelRewardItem",self.view.LastRewardItem,self,self.bottomRewardData,true) GUI:Image_loadTexture(self.bottom_Reward_item.view.bg,"bg_openreward","Atlas/QJ5_LevelRewardPanel.spriteatlas") else GUI:DataListUpdateData(self.view.RewardDatalist,_,function() self:LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE() end) self.bottom_Reward_item:RefreshItem(self.bottomRewardData) end end function this:RefreshTimeText() if not self.timerTime then local isbeforerefresh, differenceTime = self:GetServerOpendifferenceTime() local tabRankingConfig = SL:GetConfig("sub_mainActivity", 7) local serverTime = Time.GetServerTime() local outTimeTbl = ConditionManager.GetConditionParams(tabRankingConfig.showCondition) local enterRoleRes = SL:GetEnterRoleRes() local endTime = (tonumber(outTimeTbl[2])) * 86400000 + enterRoleRes.openServerTime local diff = endTime - serverTime - differenceTime * 1000 if isbeforerefresh then diff = endTime - serverTime + differenceTime * 1000 end self.timerTime = diff / 1000 if self.timerTime <= 0 then GUI:setVisible(self.view.timeTitle,false) else GUI:setVisible(self.view.timeTitle,true) GUI:SetControl_time(self.view.timerText, self.timerTime) end end end function this:GetServerOpendifferenceTime() if SL:GetEnterRoleRes() == nil then return -1 end local openTime = Time.FormatTimeYMDHMS(SL:GetEnterRoleRes().openServerTime / 1000) local hour = tonumber(string.sub(openTime, 12, 13)) local minute = tonumber(string.sub(openTime, 15, 16)) local second = tonumber(string.sub(openTime, 18, 19)) local differenceTime = 0 --刷新差值 local refreshTime = 5 --刷新时间5点改为0点 local isbeforerefresh = hour < refreshTime differenceTime = hour * 3600 + minute * 60 + second return isbeforerefresh, differenceTime end function this:Close() SL:UnRegisterLUAEvent(LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE, self.LUA_EVENT_OPENSERVICE_LEVEL_REWARD_CHANGE, self) end return this