123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- ---@class KLRechargeActivityPanel:UIKmlLuaPanelBase
- ---@field view KLRechargeActivityPanelView
- local KLRechargeActivityPanel = class(UIKmlLuaPanelBase)
- local this = KLRechargeActivityPanel
- --限时礼包主面板
- ---创建时调用一次
- function this:Init()
- --右侧礼包Toggle
- GUI:DataListInitData(self.view.activeDataList, function()
- return self:RightToggleCountFunc()
- end, function(realIndex)
- return self:RightToggleGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:RightToggleInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:RightToggleUpdateFunc(realIndex, kmlcontrol)
- end)
- self.Right_Toggle_all_item = {}
- --中间礼包
- GUI:DataListInitData(self.view.ItemBoxDataList, function()
- return self:GiftsCountFunc()
- end, function(realIndex)
- return self:GiftsGetFunc(realIndex)
- end, function(realIndex, kmlcontrol)
- return self:GiftsInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:GiftsUpdateFunc(realIndex, kmlcontrol)
- end)
- self.Gifts_all_item = {}
- self.SingleGiftItemParents = {
- [1] = self.view.SingleGift1,
- [2] = self.view.SingleGift2,
- [3] = self.view.SingleGift3,
- [4] = self.view.SingleGift4,
- }
- end
- --region 右侧礼包Toggle
- function this:RightToggleCountFunc()
- return #self.allToggleData
- end
- function this:RightToggleGetFunc(realIndex)
- local cfgData = self.allToggleData[realIndex + 1]
- local item = GUI:UIPanel_Open("dev/outui/Recharge/Item/KLRechargeActivityToggle/KLRechargeActivityToggleItem",self.view.activeDataList,self,cfgData,true)
- self.Right_Toggle_all_item[realIndex + 1] = item
- return item.view.root
- end
- function this:RightToggleInitFunc(realIndex, kmlcontrol)
- end
- function this:RightToggleUpdateFunc(realIndex, kmlcontrol)
- local cfgData = self.allToggleData[realIndex + 1]
- self.Right_Toggle_all_item[realIndex + 1]:RefreshItem(cfgData)
- end
- function this:RefreshRightToggleData()
- self.allToggleData = {}
- local timeLimitGiftInfo = table.copy(InfoManager.rechargeActivityInfo.timeLimitGiftData)
- -- table.sort(timeLimitGiftInfo,function(a, b)
- -- return a.group < b.group
- -- end)
- for group,msgInfo in pairs(timeLimitGiftInfo) do
- --没过期的
- if msgInfo.endTime - Time.GetServerTime() > 1000 then
- local giftCfgs = InfoManager.rechargeActivityInfo.timeLimitGift_giftCfg[group]
- if msgInfo.timeLimitGiftInfo and giftCfgs and table.count(msgInfo.timeLimitGiftInfo) < table.count(giftCfgs) then
- local allCfg = SL:GetConfig("cfg_timelLimitGift_all",group,"id")
- if allCfg then
- local data = {}
- data.group = group
- data.giftCfgs = giftCfgs
- data.msgInfo = msgInfo
- data.allCfg = allCfg
- table.insert(self.allToggleData,data)
- end
- end
- end
- end
- end
- function this:RefreshToggleList()
- local selectGroup = nil
- if self.selectedToggle then
- --刷新时有可能改变引用,存group
- selectGroup = self.selectedToggle.args.group
- end
- self:RefreshRightToggleData()
- if table.count(self.allToggleData) == 0 then
- return
- end
-
- -- GUI:DataListUpdateData(self.view.activeDataList)
- GUI:DataListUpdateData(self.view.activeDataList,_,function()
- if not self.selectedToggle then
- self.selectedToggle = self.Right_Toggle_all_item[1]
- end
- self:SelectGiftGroup(self.selectedToggle)
- self:RefreshRedPoint()
- end)
- --重新指向
- if selectGroup then
- self.selectedToggle = nil
- for i,data in pairs(self.allToggleData) do
- if data.group == selectGroup then
- self.selectedToggle = self.Right_Toggle_all_item[i]
- end
- end
- end
- end
- --endregion 右侧礼包Toggle
- function this:SelectGiftGroup(toggle)
- --点击toggle
- if self.selectedToggle then
- self.selectedToggle:ToggleOff()
- end
- self.selectedToggle = toggle
- self.selectedToggle:ToggleOn()
- local data = toggle.args
- if data then
- if table.count(data.giftCfgs) == 1 then
- GUI:setVisible(self.view.LevelGiftPanel,false)
- GUI:setVisible(self.view.SingleGiftPanel,true)
- self:RefreshSingleGiftList(data)
- else
- GUI:setVisible(self.view.LevelGiftPanel,true)
- GUI:setVisible(self.view.SingleGiftPanel,false)
- self:RefreshGiftList(data)
- end
- GUI:Text_setString(self.view.DIY_Text_Level, data.allCfg.tip)
- local actualTimer = (data.msgInfo.endTime - Time.GetServerTime()) / 1000
- if actualTimer > 0 then
- GUI:SetControl_time(self.view.DIY_TimeText, actualTimer)
- end
- end
- end
- --region 中间礼包
- function this:GiftsCountFunc()
- return #self.allGiftData
- end
- function this:GiftsGetFunc(realIndex)
- local cfgData = self.allGiftData[realIndex + 1]
- local item = GUI:UIPanel_Open("dev/outui/Recharge/Item/KLRechargeActivityTwo/KLRechargeActivityTwoItem",self.view.ItemBoxDataList,self,cfgData,true)
- self.Gifts_all_item[realIndex + 1] = item
- return item.view.root
- end
- function this:GiftsInitFunc(realIndex, kmlcontrol)
- end
- function this:GiftsUpdateFunc(realIndex, kmlcontrol)
- local cfgData = self.allGiftData[realIndex + 1]
- self.Gifts_all_item[realIndex + 1]:RefreshItem(cfgData)
- end
- function this:RefreshGiftData(data)
- self.allGiftData = {}
- --刷新礼包数据 data.giftCfgs 显示基本,data.msgInfo.timeLimitGiftInfo 显示是否购买
- for i,giftCfg in pairs(data.giftCfgs) do
- local giftData = {}
- giftData.giftCfg = giftCfg
- giftData.hasBuy = table.contains(data.msgInfo.timeLimitGiftInfo,giftCfg.id)
- if giftCfg.sort == 1 then
- giftData.canBuy = true
- else
- local prevGift = InfoManager.rechargeActivityInfo.timeLimitGift_giftCfg[giftCfg.group][giftCfg.sort-1]
- giftData.canBuy = prevGift and table.contains(data.msgInfo.timeLimitGiftInfo,prevGift.id)
- end
- table.insert(self.allGiftData,giftData)
- end
- end
- function this:RefreshGiftList(data)
- self:RefreshGiftData(data)
- GUI:DataListUpdateData(self.view.ItemBoxDataList,_,function()
- self:RefreshRedPoint()
- end)
- end
- --endregion 中间礼包
- function this:RefreshSingleGiftList(data)
- --单个礼包特殊处理
- self:RefreshGiftData(data)
- local giftData = self.allGiftData[1]
- --道具列表
- if not self.singleGiftItems then
- self.singleGiftItems = {}
- end
- for i=1,4 do
- local giftInfo = giftData.giftCfg.gift[i]
- if not self.singleGiftItems[i] then
- local itemId = giftInfo[1]
- local itemCount = giftInfo[2]
- local item = GUI:Item_Create(self.SingleGiftItemParents[i],{
- width = 60,
- height = 60,
- itemid = itemId,
- --mfixsize = "80,80",
- tips = "1",
- itemcustomcount = itemCount,
- })
- GUI:AddOnClickEvent(item,self,function()
- SL:OpenTips(nil,itemId)
- end)
- self.singleGiftItems[i] = item
- else
- local itemId = giftInfo[1]
- local itemCount = giftInfo[2]
- local item = self.singleGiftItems[i]
- GUI:Item_setItemId(item,itemId)
- GUI:Item_setItemCount(item,itemCount)
- GUI:AddOnClickEvent(item,self,function()
- SL:OpenTips(nil,itemId)
- end)
- end
- end
- --按钮
- if giftData.hasBuy then
- GUI:setVisible(self.view.SingleBuyBtn,false)
- GUI:setVisible(self.view.SingleGetZuanShiBtn,false)
- else
- GUI:setVisible(self.view.SingleBuyBtn,true)
- GUI:setVisible(self.view.SingleGetZuanShiBtn,true)
- if table.count(giftData.giftCfg.cost) == 0 then
- GUI:setVisible(self.view.Singlezuanshi,false)
- GUI:Text_setString(self.view.SingleBuyCount,"免费")
- else
- --GUI:Image_loadTexture(self.view.Singlezuanshi,) --TODO:根据道具id显示图标
- GUI:setVisible(self.view.Singlezuanshi,true)
- --GUI:setContentSize(self.view.Singlezuanshi,43,24) --组件自适应偶尔会把宽改成0
- GUI:Text_setString(self.view.SingleBuyCount,tostring(giftData.giftCfg.cost[2]))
- end
- -- if giftData.canBuy then --单个的不需要锁
- -- GUI:setVisible(self.view.LockUI,false)
- -- else
- -- GUI:setVisible(self.view.LockUI,true)
- -- end
- end
- self:RefreshRedPoint()
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.CloseButton, self, self.BtnCloseOnClick)
- GUI:AddOnClickEvent(self.view.SingleBuyBtn, self, self.SingleBuyBtn)
- GUI:AddOnClickEvent(self.view.SingleGetZuanShiBtn, self, self.SingleGetZuanShiBtn)
- end
- function this:BtnCloseOnClick()
- GUI:UIPanel_Close("dev/outui/Recharge/Panel/KLRechargeActivity/KLRechargeActivityPanel")
- SL.ShowMainPanel()
- end
- function this:SingleGetZuanShiBtn()
- if InfoManager.uiFirstChargeInfo:IsShowBtn() then
- --跳转至首充界面
- GUI:UIPanel_Close("dev/outui/Recharge/Panel/KLRechargeActivity/KLRechargeActivityPanel")
- GUI:UIPanel_Open("dev/outui/FirstCharge/Panel/KLFirstCharge/KLFirstChargePanel")
- else
- --跳转充值界面
- GUI:UIPanel_Close("dev/outui/Recharge/Panel/KLRechargeActivity/KLRechargeActivityPanel")
- -- GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLRecharge/KLRechargePanel")
- -- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, {type=1, action="panel"})
- GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel",nil,nil,{2})
- end
- end
- function this:SingleBuyBtn()
- if not self.allGiftData[1].canBuy then
- --SL:TipMessage({ SL:GetConfig('cfg_string', 330).text, 1, NoticeType.NoticeMid })
- SL:TipMessage( "请先解锁上一档礼包",1, NoticeType.NoticeMid)
- return
- end
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BUY_TIME_LIMIT_GIFT ,{id = self.allGiftData[1].giftCfg.id})
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- self:RefreshToggleList()
- if table.count(self.allToggleData) == 0 then
- self:BtnCloseOnClick()
- return
- end
- -- if not self.selectedToggle then
- -- self.selectedToggle = self.Right_Toggle_all_item[1]
- -- end
- -- self:SelectGiftGroup(self.selectedToggle)
- -- self:RefreshRedPoint()
- end
- function this:RefreshRedPoint()
- local needRedPoint,data = InfoManager.rechargeActivityInfo:IsShowTimeLimitGiftRedDot()
- if needRedPoint then
- --toggle红点
- for i,toggle in pairs(self.Right_Toggle_all_item) do
- if toggle then
- local group = toggle.args.group
- if data[toggle.args.group] then
- GUI:setVisible(toggle.view.redDot,true)
- else
- GUI:setVisible(toggle.view.redDot,false)
- end
- end
- end
- --礼包红点
- if self.selectedToggle and data[self.selectedToggle.args.group] then
- local sorts = data[self.selectedToggle.args.group]
- for i,gift in pairs(self.Gifts_all_item) do
- if table.contains(sorts,gift.args.giftCfg.sort) then
- GUI:setVisible(gift.view.RedDot,true)
- else
- GUI:setVisible(gift.view.RedDot,false)
- end
- end
- else
- for i,gift in pairs(self.Gifts_all_item) do
- GUI:setVisible(gift.view.RedDot,false)
- end
- end
- else
- --toggle红点
- for i,toggle in pairs(self.Right_Toggle_all_item) do
- if toggle then
- GUI:setVisible(toggle.view.redDot,false)
- end
- end
- --礼包红点
- for i,gift in pairs(self.Gifts_all_item) do
- GUI:setVisible(gift.view.RedDot,false)
- end
- end
- end
- function this:Close()
- -- self.selectedToggle = nil
- end
- return this
|