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