require("Base/BasePanel") local UpGradePackagePanel = Inherit(BasePanel) local this = UpGradePackagePanel local RechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)--整表数据 local upgradeConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",21)--五档奖励数据 local fightLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig) local rechargeNum = 0 local cursortingOrder = 0 local curGiftList = {} local curGiftId = nil local curEndTime = 0 local curIndex local curType local fun--回调 local rechargeData local activityType = { [1] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 21,Text = Language[12319]}, [2] = {name = Language[11936],timePos = Vector3.New(0,-567,0),comp = "bg2",showType = 8,Text = ""}, [3] = {name = "关卡推送礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 25,Text = Language[12320]}, [4] = {name = "心魔试炼礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 26,Text = Language[12321]}, --[5] = {name = "灵兽推送礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 31,Text = "恭喜您获得极品灵兽,这是为您准备的灵兽成长礼包,助您实力飞升"}, --[6] = {name = "惊喜礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 33,Text = "购买惊喜礼盒成功激活限时豪礼,祝您战力飞升,一路通关"}, --[7] = {name = "轩辕宝镜推送礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 36,Text = "恭喜您获得红色宝物,海量宝物强化资源,助您实力飞升"}, --[8] = {name = "神树养成礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 37,Text = "恭喜您宝物精炼小成,更多精炼素材,助您实力飞升"}, --[9] = {name = "四灵试炼推送礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 38,Text = "恭喜您轩辕宝境登顶,稀有宝物献上,助您实力飞升"}, --[10] = {name = "红色品质宝物推送礼包",timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 39,Text = "恭喜您四灵试炼成功,大量神树养成资源,助您实力飞升"}, } --初始化组件(用于子类重写) function this:InitComponent() this.spLoader = SpriteLoader.New() this.btnClose = Util.GetGameObject(self.gameObject,"show/btnBack") this.btnBuy = Util.GetGameObject(self.gameObject,"show/Button") this.grid = Util.GetGameObject(self.gameObject,"show/rewards/Grid") this.endTime = Util.GetGameObject(self.gameObject,"show/endTime"):GetComponent("Text") this.price = Util.GetGameObject(self.gameObject,"show/Button/Text"):GetComponent("Text") this.oriPrice = Util.GetGameObject(self.gameObject,"show/price/Text1"):GetComponent("Text") this.arrowsLeft = Util.GetGameObject(self.gameObject,"show/arrows/left") this.arrowsRight = Util.GetGameObject(self.gameObject,"show/arrows/right") this.UI_effect_DailyRechargePanel_particle = Util.GetGameObject(self.gameObject, "bg1/UI_effect_DailyRechargePanel_particle") this.times = Util.GetGameObject(self.gameObject,"show/timesLeft"):GetComponent("Text") this.tip = Util.GetGameObject(self.gameObject,"show/tip"):GetComponent("Text") this.desImage = Util.GetGameObject(self.gameObject,"Image") end --绑定事件(用于子类重写) function this:BindEvent() Util.AddClick(this.btnClose,function() self:ClosePanel() end) Util.AddClick(this.btnBuy,function() PayManager.Pay(curGiftId, function(id) FirstRechargeManager.RefreshAccumRechargeValue(curGiftId) CheckRedPointStatus(RedPointType.GrowthPackage)--成长礼包的红点检测 rechargeData.dynamicBuyTimes = rechargeData.dynamicBuyTimes - 1 --判断可购买次数是否为零,是剔除礼包信息 -- for i = 1, #curGiftList do if rechargeData.dynamicBuyTimes < 1 then OperatingManager.SetHadBuyGoodsId({curGiftId}) OperatingManager.RemoveItemInfoByType(GoodsTypeDef.DirectPurchaseGift, curGiftId) end -- end this:Refresh() end) end) Util.AddClick(this.arrowsLeft,function() curIndex = curIndex - 1 if curGiftList[curType][curIndex] then else while(curType >= 0) do if not activityType[curType] then curType = LengthOfTable(activityType) else curType = curType - 1 end if curGiftList[curType] and #curGiftList[curType] > 0 then curIndex = #curGiftList[curType] break end end end OperatingManager.upGradePackagePanelType = curType OperatingManager.upGradePackagePanelIndex = curIndex this:Refresh() end) Util.AddClick(this.arrowsRight,function() curIndex = curIndex + 1 if curGiftList[curType][curIndex] then else while(curType <= LengthOfTable(activityType) + 1) do if not activityType[curType] then curType = 1 else curType = curType + 1 end if curGiftList[curType] and #curGiftList[curType] > 0 then curIndex = 1 break end end end OperatingManager.upGradePackagePanelType = curType OperatingManager.upGradePackagePanelIndex = curIndex this:Refresh() end) end --添加事件监听(用于子类重写) function this:AddListener() end --移除事件监听(用于子类重写) function this:RemoveListener() end function this:OnSortingOrderChange() Util.AddParticleSortLayer( self.UI_effect_DailyRechargePanel_particle, self.sortingOrder - cursortingOrder) cursortingOrder = self.sortingOrder end --界面打开时调用(用于子类重写) function this:OnOpen(_fun) fun = _fun -- 音效 SoundManager.PlaySound(SoundConfig.Sound_mrhl) end --获取(自己拼凑)礼包数据 function this:GetInfoList() local infoList = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)--拿取所有类型5礼包信息(包含需要的礼包) local num = 0 for k,v in pairs(activityType) do curGiftList[k] = {} local infoList2 = ConfigManager.TryGetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",v.showType) -- if infoList2==nil or #infoList2==0 then -- this:ClosePanel() -- return -- end if infoList2 then for index, value in pairs(infoList) do for i = 1, #infoList2 do if infoList2[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then table.insert(curGiftList[k],value) num = num + 1 end end end end end return num end function this:OnShow() this:Refresh() end function this:SetCurTypeAndIndex() curType = OperatingManager.upGradePackagePanelType and OperatingManager.upGradePackagePanelType or 1 curIndex = OperatingManager.upGradePackagePanelIndex and OperatingManager.upGradePackagePanelIndex or 0 if curGiftList[curType] and #curGiftList[curType] > 0 and curGiftList[curType][curIndex] then elseif curGiftList[curType] and #curGiftList[curType] > 0 and (not curGiftList[curType][curIndex]) then curIndex = #curGiftList[curType] return curGiftList[curType][curIndex] else for k,v in pairs(curGiftList) do if v and #v > 0 then curType = k curIndex = #curGiftList[curType] return curGiftList[curType][curIndex] end end end return curGiftList[curType][curIndex] end function this:Refresh() local num = self:GetInfoList() if num < 1 then this:ClosePanel() return end rechargeData = this:SetCurTypeAndIndex() for k,v in pairs(activityType) do Util.GetGameObject(self.gameObject,v.comp):SetActive(false) end Util.GetGameObject(self.gameObject, activityType[curType].comp):SetActive(true) rechargeNum= VipManager.GetChargedNum() curGiftId = rechargeData.goodsId if curType == 1 then this.tip.text = string.format(activityType[curType].Text,RechargeConfig[curGiftId].Desc) this.desImage:SetActive(false) else this.tip.text = string.format(activityType[curType].Text) this.desImage:SetActive(true) end this.arrowsLeft:SetActive(num > 1) this.arrowsRight:SetActive(num > 1) curEndTime = rechargeData.endTime this.endTime.text = Language[10573]..TimeToHMS(curEndTime-GetTimeStamp()) --this.endTime.gameObject:GetComponent("RectTransform").localPosition = activityType[curType].timePos this:SetGfitShow(rechargeData) this:SetTime(rechargeData) end --设置奖励 local _ItemViewList = {} function this:SetGfitShow(rechargeData) for k,v in pairs(_ItemViewList) do v.gameObject:SetActive(false) end for i=1, #RechargeConfig[curGiftId].RewardShow do if not _ItemViewList[i] then local view = SubUIManager.Open(SubUIConfig.ItemView,this.grid.transform) _ItemViewList[i] = view end _ItemViewList[i]:OnOpen(false,RechargeConfig[curGiftId].RewardShow[i],0.95,false) _ItemViewList[i].gameObject:SetActive(true) end this.times.text = Language[10580]..rechargeData.dynamicBuyTimes..Language[10048] this.price.text = string.format(MoneyUtil.GetMoneyUnitName(), MoneyUtil.GetMoney(RechargeConfig[curGiftId].Price))--..MoneyUtil.GetMoneyUnitName() if activityType[curType].Rebate and activityType[curType].Rebate ~= 0 then this.oriPrice.transform.parent.gameObject:SetActive(true) this.oriPrice = string.format(MoneyUtil.GetMoneyUnitName(), activityType[curType].Rebate) else this.oriPrice.transform.parent.gameObject:SetActive(false) end end --设置剩余时间,取剩余时间最短的礼包 function this:SetTime() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end self.localTimer = Timer.New(function() -- curEndTime= curEndTime-1 --时间到了之后 if curEndTime-GetTimeStamp() < 0 then OperatingManager.RemoveItemInfoByType(GoodsTypeDef.DirectPurchaseGift, curGiftId) this:Refresh() end this.endTime.text = Language[10573]..TimeToHMS(curEndTime-GetTimeStamp()) end,1,-1,true) self.localTimer:Start() end function this:Hide() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end end --界面关闭时调用(用于子类重写) function this:OnClose() if fun then fun() fun = nil end Timer.New(function () Game.GlobalEvent:DispatchEvent(GameEvent.PatFace.RefreshRightUp) end,1):Start() end --界面销毁时调用(用于子类重写) function this:OnDestroy() this.spLoader:Destroy() cursortingOrder = 0 _ItemViewList = {} if self.localTimer then self.localTimer:Stop() self.localTimer = nil end end return UpGradePackagePanel