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}, [2] = {name = Language[11936],timePos = Vector3.New(0,-567,0),comp = "bg2",showType = 8}, [3] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 25}, [4] = {name = Language[11935],timePos = Vector3.New(0,-255.6,0),comp = "bg1",showType = 26}, } --初始化组件(用于子类重写) function this:InitComponent() 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") 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.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",v.showType) 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 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) local level = 0 if (PlayerManager.level)%10 == 8 then level = PlayerManager.level else level = (math.floor(PlayerManager.level/10)-1)*10+8 end rechargeNum= VipManager.GetChargedNum() if curType == 1 then this.tip.text = Language[11937]..level..Language[12174] or "" elseif curType == 3 then local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig,93).Value local num = tonumber(specialConfig) local value = fightLevelConfig[FightPointPassManager.lastPassFightId].SortId local value2 = GetLanguageStrById(ConfigManager.GetConfigDataByKey(ConfigName.MainLevelConfig,"SortId",math.floor(value/num)*num).Name) this.tip.text =Language[11939]..value2..Language[11940] elseif curType == 4 then local specialConfig = ConfigManager.GetConfigData(ConfigName.SpecialConfig,92).Value local str = string.split(specialConfig,"|") local nums = string.split(str[1],"#") local canGet = false local value = MonsterCampManager.monsterWave local value2 = 0 if value <= tonumber(nums[#nums]) then local temp = tonumber(nums[#nums]) - tonumber(nums[#nums-1]) value2 = math.floor(value/temp) * temp else value2 = math.floor((value - tonumber(nums[#nums]))/tonumber(str[2]))* tonumber(str[2]) + tonumber(nums[#nums]) end this.tip.text =Language[11941]..value2..Language[11942] else this.tip.text = "" end -- this.tip.text = curType == 1 and "恭喜您等级提升至"..level.."级,我们为您准备了超值礼包,助您提升战力!!!" or "" this.arrowsLeft:SetActive(num > 1) this.arrowsRight:SetActive(num > 1) curGiftId = rechargeData.goodsId 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 end --界面销毁时调用(用于子类重写) function this:OnDestroy() cursortingOrder = 0 _ItemViewList = {} if self.localTimer then self.localTimer:Stop() self.localTimer = nil end end return UpGradePackagePanel