---@class KLLevelRewardItem:UIKmlLuaPanelBase ---@field view KLLevelRewardItemView local KLLevelRewardItem = class(UIKmlLuaPanelBase) local this =KLLevelRewardItem --等级奖励的一条 ---创建时调用一次 function this:Init() --道具奖励列表 GUI:DataListInitData(self.view.RewardItemDatalist, function() return self:RewardItemCountFunc() end, function(realIndex) return self:RewardItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:RewardItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:RewardItemUpdateFunc(realIndex, kmlcontrol) end) self.Reward_Item_all_item = {} end --region 道具奖励列表 function this:RewardItemCountFunc() return #self.allItemData end function this:RewardItemGetFunc(realIndex) local itemData = self.allItemData[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/LevelReward/Item/KLLevelRewardItem/KLLevelRewardItemItem",self.view.RewardItemDatalist,self,itemData,true) self.Reward_Item_all_item[realIndex + 1] = item return item.view.root end function this:RewardItemInitFunc(realIndex, kmlcontrol) end function this:RewardItemUpdateFunc(realIndex, kmlcontrol) local itemData = self.allItemData[realIndex + 1] self.Reward_Item_all_item[realIndex + 1]:RefreshItem(itemData) end function this:RefreshItemList() if self.args then self.allItemData = {} for _,item in ipairs(self.args.basicItem) do local data = {} data.id = item[1] data.count = item[2] data.specialTips = nil table.insert(self.allItemData,data) end local specialData = {} specialData.id = self.args.specialItem[1] specialData.count = self.args.specialItem[2] specialData.specialTips = self.args.specialTips table.insert(self.allItemData,specialData) GUI:DataListUpdateData(self.view.RewardItemDatalist,_,function() self:RefreshShowType(self.showType) end) end end --endregion 道具奖励列表 ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.GetBtn, self, self.GetBtn) end function this:GetBtn() if self.showType == OpenServiceLevelReward_ShowType.GetNormal or self.showType == OpenServiceLevelReward_ShowType.GetSpecial or self.showType == OpenServiceLevelReward_ShowType.GetSpecialOnly then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECEIVE_LEVEL_REWARD,{id=self.args.id}) elseif self.showType == OpenServiceLevelReward_ShowType.SpecialGoto then GUI:UIPanel_Close("dev/outui/MainActivity/Panel/KLMainActivity/KLMainActivityPanel") GUI:UIPanel_Open("dev/outui/VIP/Panel/KLNewVIPMain/KLNewVIPMainPanel") SL.HideMainPanel() else SL:TipMessage( "不满足领取条件",1, NoticeType.NoticeMid) end end ---界面显示时调用一次 function this:Show() end ---创建或者刷新界面数据时调用 function this:Refresh() --- @param self.args cfg_activity_levelUp_column if self.args then local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if playerLevel < self.args.level then GUI:Text_setString(self.view.levelText,string.format("等级达到%d级",self.args.level)) GUI:setVisible(self.view.needLevelText,true) GUI:Text_setString(self.view.needLevelText,string.format("还差%d级可领取",self.args.level-playerLevel)) else GUI:Text_setString(self.view.levelText,string.format("等级达到%d级",self.args.level)) GUI:setVisible(self.view.needLevelText,false) end self:RefreshItemList() end end function this:RefreshItem(args) self.args = args self:Refresh() end function this:RefreshShowType(showType) self.showType = showType if showType == OpenServiceLevelReward_ShowType.GetNormal then GUI:setVisible(self.view.TipsTex,false) GUI:setVisible(self.view.GetBtn,true) GUI:setVisible(self.view.haveGet,false) GUI:setVisible(self.view.RedDot,true) GUI:Button_setTitleText(self.view.GetBtn,"领取奖励") if not string.isNullOrEmpty(self.args.Places) then GUI:setVisible(self.view.TipsTex,true) self:ShowTipsCount() GUI:setPositionX(self.view.TipsTex,194) end elseif showType == OpenServiceLevelReward_ShowType.GetSpecial then GUI:setVisible(self.view.TipsTex,false) GUI:setVisible(self.view.GetBtn,true) GUI:setVisible(self.view.haveGet,false) GUI:setVisible(self.view.RedDot,true) GUI:Button_setTitleText(self.view.GetBtn,"领取奖励") if not string.isNullOrEmpty(self.args.Places) then GUI:setVisible(self.view.TipsTex,true) self:ShowTipsCount() GUI:setPositionX(self.view.TipsTex,194) end elseif showType == OpenServiceLevelReward_ShowType.GetSpecialOnly then GUI:setVisible(self.view.TipsTex,false) GUI:setVisible(self.view.GetBtn,true) GUI:setVisible(self.view.haveGet,false) GUI:setVisible(self.view.RedDot,true) GUI:Button_setTitleText(self.view.GetBtn,"领取奖励") if not string.isNullOrEmpty(self.args.Places) then GUI:setVisible(self.view.TipsTex,true) self:ShowTipsCount() GUI:setPositionX(self.view.TipsTex,194) end elseif showType == OpenServiceLevelReward_ShowType.SpecialGoto then GUI:setVisible(self.view.TipsTex,false) GUI:setVisible(self.view.GetBtn,true) GUI:setVisible(self.view.haveGet,false) GUI:setVisible(self.view.RedDot,false) GUI:Button_setTitleText(self.view.GetBtn,self.args.specialButton) if not string.isNullOrEmpty(self.args.Places) then GUI:setVisible(self.view.TipsTex,true) self:ShowTipsCount() GUI:setPositionX(self.view.TipsTex,194) end elseif showType == OpenServiceLevelReward_ShowType.HaveGotten then GUI:setVisible(self.view.TipsTex,false) GUI:Text_setString(self.view.TipsTex,"已领取") GUI:setVisible(self.view.GetBtn,false) GUI:setVisible(self.view.haveGet,true) --GUI:setPositionX(self.view.TipsTex,316) elseif showType == OpenServiceLevelReward_ShowType.ServerCount then GUI:setVisible(self.view.TipsTex,true) GUI:setVisible(self.view.GetBtn,false) GUI:setVisible(self.view.haveGet,false) self:ShowTipsCount() GUI:setPositionX(self.view.TipsTex,316) elseif showType == OpenServiceLevelReward_ShowType.LevelNotEnough then GUI:setVisible(self.view.TipsTex,false) GUI:setVisible(self.view.GetBtn,false) GUI:setVisible(self.view.haveGet,false) end --刷新道具显示 for _,item in ipairs(self.Reward_Item_all_item) do item:RefreshShowType(showType) end end function this:ShowTipsCount() local totalNum = tonumber(self.args.Places) local haveNum = 0 if InfoManager.openServiceLevelRewardInfo.serverInfo[self.args.id] then haveNum = InfoManager.openServiceLevelRewardInfo.serverInfo[self.args.id] end local leftNum = totalNum - haveNum if leftNum < totalNum / 2 then GUI:Text_setString(self.view.TipsTex,string.format("全服限量:%d/%d",leftNum,totalNum)) else GUI:Text_setString(self.view.TipsTex,string.format("全服限量:%d/%d",leftNum,totalNum)) end end function this:Close() end return this