---@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