local EveryDayGift = {} local rechargeNum = 0 function EveryDayGift:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = EveryDayGift }) return b end local heroId = 10026 --添加事件监听(用于子类重写) function EveryDayGift:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FindFairy.RefreshBuyOpenState,self.RefreshData1,self) end --移除事件监听(用于子类重写) function EveryDayGift:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FindFairy.RefreshBuyOpenState,self.RefreshData1,self) end function EveryDayGift:RefreshData1() local freshTime = 0 self.shopData = DynamicActivityManager.GetGiftDataByType(self.actConfig.ShopData) if self.shopData and #self.shopData > 0 then freshTime = self.shopData[#self.shopData].data.endTime end if freshTime - GetTimeStamp() <= 0 then self:RefreshData(true,true,false) end end function EveryDayGift:InitComponent() self.spLoader = SpriteLoader.New() self.bg = Util.GetGameObject(self.gameObject, "rzyBg") self.titleBgIma = Util.GetGameObject(self.bg,"bg"):GetComponent("Image") self.titleIma = Util.GetGameObject(self.bg,"titleIma"):GetComponent("Image") self.titleTipBg = Util.GetGameObject(self.bg,"titleTipBg"):GetComponent("Image") self.titleTip = Util.GetGameObject(self.bg,"titleTip"):GetComponent("Text") self.extra = Util.GetGameObject(self.bg,"extarTitle") self.freeBtn = Util.GetGameObject(self.extra,"freeBtn") self.freeBtnAnim = Util.GetGameObject(self.freeBtn,"UI_effect_TanSuo_Box"):GetComponent("Animator") self.redPoint = Util.GetGameObject(self.bg,"freeBtn/redPoint") self.oneKey = Util.GetGameObject(self.extra,"oneKey") self.buyAllBtn = Util.GetGameObject(self.oneKey,"oneKeyBtn") self.oriPrice = Util.GetGameObject(self.oneKey,"oriPrice"):GetComponent("Text") self.nowPrice = Util.GetGameObject(self.oneKey,"nowPrice"):GetComponent("Text") self.allSaoGuang = Util.GetGameObject(self.oneKey, "saoguang") self.store = Util.GetGameObject(self.extra, "store") self.UI_Effect_jinkuang_Yuan = Util.GetGameObject(self.store, "UI_Effect_jinkuang_Yuan") self.endTimeBg = Util.GetGameObject(self.bg,"tiao") self.endTime = Util.GetGameObject(self.endTimeBg,"time"):GetComponent("Text") self.itemPre = Util.GetGameObject(self.bg,"ItemPre") self.scrollItem = Util.GetGameObject(self.bg,"scrollItem") self.lightList = { Util.GetGameObject(self.freeBtnAnim.gameObject,"bg_ray"), Util.GetGameObject(self.freeBtnAnim.gameObject,"yinying/ray 1"), Util.GetGameObject(self.freeBtnAnim.gameObject,"yinying/ray 2"), Util.GetGameObject(self.freeBtnAnim.gameObject,"yinying/ray 3"), Util.GetGameObject(self.freeBtnAnim.gameObject,"yinying/ray 4"), } -- 设置循环滚动,万一礼包内容不停地加 local rootHight = self.scrollItem.transform.rect.height local width = self.scrollItem.transform.rect.width self.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.scrollItem.transform, self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 35)) self.scrollView.moveTween.MomentumAmount = 1 self.scrollView.moveTween.Strength = 2 self.ItemList = {} self.sortingOrder = 0 self.curObjPar = Util.GetGameObject(self.gameObject,"curObj") self.rectMask = Util.GetGameObject(self.gameObject,"GameObject") end function EveryDayGift:BindEvent() Util.AddOnceClick(self.buyAllBtn,function () PayManager.Pay(1004, function(id) FirstRechargeManager.RefreshAccumRechargeValue(1004) PlayerPrefs.SetInt(PlayerManager.uid.."czlb", 0) CheckRedPointStatus(RedPointType.GrowthPackage) self:RefreshData(nil,false,false) end) end) Util.AddOnceClick(self.store,function() JumpManager.GoJump(40020) end) end --界面打开时调用(用于子类重写) function EveryDayGift:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent self.gameObject.name = "EveryDayGift"..self.actConfig.Id end function EveryDayGift:OnSortingOrderChange(_sortingOrder) Util.SetParticleSortLayer(self.UI_Effect_jinkuang_Yuan, _sortingOrder+1) self.sortingOrder = _sortingOrder end -- 打开,重新打开时回调 function EveryDayGift:OnShow(_sortingOrder) self.gameObject:SetActive(true) self.sortingOrder = _sortingOrder or self.sortingOrder Util.SetParticleSortLayer(self.UI_Effect_jinkuang_Yuan, self.sortingOrder+1) self.extra:SetActive(true) self.actId = self.actConfig.ActId self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType if self.actConfig.IfBack == 1 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) if id and id > 0 then self.actId = id local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id) if config then self.actConfig = config end end end end if self.actType == ActivityTypeDef.DynamicAct_Treasure or self.actType == ActivityTypeDef.linglongshangshi then self.parent.tabbox.gameObject:SetActive(false) else self.parent.tabbox.gameObject:SetActive(true) end if self.actConfig.Icon[3] and self.actConfig.Icon[3] ~= "" and self.actConfig.Icon[3] ~= "0" then self.titleBgIma.enabled = true self.titleBgIma.sprite = self.spLoader:LoadSprite(self.actConfig.Icon[3]) else self.titleBgIma.enabled = false end if self.actConfig.Icon[4] and self.actConfig.Icon[4] ~= "" then self.titleIma.gameObject:SetActive(true) self.titleIma.sprite = self.spLoader:LoadSprite(self.actConfig.Icon[4]) self.titleIma:SetNativeSize() self.titleIma.transform.localPosition = Vector3.New(self.actConfig.TitleImapos[1],self.actConfig.TitleImapos[2],self.actConfig.TitleImapos[3]) else self.titleIma.gameObject:SetActive(false) end if self.actConfig.TitleText and self.actConfig.TitleText ~= "" then local str = string.split(GetLanguageStrById(self.actConfig.TitleText),"|") self.titleTip.text = str[1] self.titleTip.transform.localPosition = Vector3.New((str[2] or 0),(str[3] or 0),(str[4] or 0)) self.titleTip.gameObject:SetActive(true) else self.titleTip.gameObject:SetActive(false) end if self.actConfig.Id == 63 then VipManager.SetGrowthPackagePointStatus() CheckRedPointStatus(RedPointType.GrowthPackage) end self:RefreshBanner() self:RefreshData(true,true,true) end function EveryDayGift:RefreshBanner() if self.actType == 96 then self.curObjPar.gameObject:SetActive(true) self.rectMask .gameObject:SetActive(true) local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig,heroId) if not self.curLiveObj then self.curLiveObj = poolManager:LoadLive(GetResourcePath(heroConfig.Live), self.curObjPar.transform, Vector3.one * heroConfig.Scale, Vector3.New(heroConfig.Position[1], heroConfig.Position[2], 0)) local SkeletonGraphic = self.curLiveObj:GetComponent("SkeletonGraphic") SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end else self.curObjPar.gameObject:SetActive(false) self.rectMask .gameObject:SetActive(false) end end function EveryDayGift:RefreshData(isUpdata,isTop,isAni) if self.actConfig.RpType > 0 then CheckRedPointStatus(self.actConfig.RpType) end self.shopData = DynamicActivityManager.GetGiftDataByType(self.actConfig.ShopData) if isUpdata then -- 刷新剩余时间 self:GetRemainTime() -- 刷新一键购买显示 self:RefreshOneKeyShow() self:RefreshFreeData() end -- 刷新商品数据 self:RefreshGiftData(isTop,isAni) end -- 刷新礼包的数据 function EveryDayGift:RefreshGiftData(isTop,isAni) rechargeNum = VipManager.GetChargedNum()--已经充值的金额 self:isBought() self.scrollView:ForeachItemGO(function(index, go) go.gameObject:SetActive(false) end) local callBack = function(index, item) self:RefreshShowData(item, self.shopData[index],index) end local curindex = 0 self.scrollView:SetData(self.shopData, callBack,not isTop,not isAni) for i = 1 ,#self.shopData do if self.shopData[i].DataType == DynamicActivityManager.selectIndex.dataType then for j = 1 , #DynamicActivityManager.selectIndex.goodsId do if (self.shopData[i].data.shopData.id or self.shopData[i].data.shopData.goodsId) == DynamicActivityManager.selectIndex.goodsId[j] then DynamicActivityManager.SetSelectIndex(0,{},1) curindex = i break end end end if curindex ~= 0 then break end end -- if PlayerManager.isSixStarJump and curindex==0 then -- curindex = 7 -- end if curindex ~= 0 then self.scrollView:SetIndex(curindex) end end function EveryDayGift:isBought() for i = 1, #self.shopData do if self.shopData[i].data.boughtNum > 0 then Util.SetGray(self.buyAllBtn,true) self.buyAllBtn:GetComponent("Button").interactable = false self.allSaoGuang:SetActive(false) break end end end --刷新每一条的显示数据 function EveryDayGift:RefreshShowData(item,_data,index) if not self.ItemList then self.ItemList = {} end if not self.ItemList[item] then local subConfig = SubUIConfig[self.actConfig.UIName[2]] self.ItemList[item] = SubUIManager.Open(subConfig,item.transform) end if not _data then item.gameObject:SetActive(false) return end item.gameObject:SetActive(true) self.ItemList[item]:SetData(_data,self,rechargeNum,self.sortingOrder) end -- 刷新一键购买显示 function EveryDayGift:RefreshOneKeyShow() if self.actType ~= FUNCTION_OPEN_TYPE.MeiRiLiBao then self.extra.gameObject:SetActive(false) return end Util.SetGray(self.buyAllBtn,false) self.buyAllBtn:GetComponent("Button").interactable = true self.allSaoGuang:SetActive(true) -- 计算总价 local ori = 0 for i = 1 , #self.shopData do ori = ori + self.shopData[i].data.finalNum end -- 计算现价 local now = 0 now = now + MoneyUtil.GetMoney(ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,1004).Price) self.oriPrice.text = Language[10582] .. string.format(MoneyUtil.GetMoneyUnitName(),ori) self.nowPrice.text = Language[10644] .. string.format(MoneyUtil.GetMoneyUnitName(),now) end --每种礼包的剩余时间 function EveryDayGift:GetRemainTime() if self.actConfig.ShowTime == 0 then self.endTimeBg.gameObject:SetActive(false) return end local la = "" if self.actConfig.ShowTime ~= 1 then la = Language[10023] else la = Language[11355] end self.endTimeBg.gameObject:SetActive(true) local freshTime = 0 if self.shopData and #self.shopData > 0 then freshTime = self.shopData[#self.shopData].data.endTime end if freshTime - GetTimeStamp() <= 0 then return end freshTime = freshTime - GetTimeStamp() local UpDate = function() if freshTime > 0 then -- 剩余小时 local formatTime, leftHour = TimeToHMS(freshTime) if leftHour > 24 then self.endTime.text = la..TimeToDHMS(freshTime)--天时分秒 else self.endTime.text = la..formatTime--时分秒 end elseif freshTime < 0 then self.endTime.text = la..TimeToDHMS(0) if self.localTimer then self.localTimer:Stop() self.localTimer = nil end self:RefreshData(true) end freshTime = freshTime - 1 end UpDate() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end if not self.localTimer then self.localTimer = Timer.New(UpDate, 1, -1, true) self.localTimer:Start() end end --刷新每日免费礼包 function EveryDayGift:RefreshFreeData() if self.actType ~= FUNCTION_OPEN_TYPE.MeiRiLiBao then self.extra.gameObject:SetActive(false) return end local freeData = ShopManager.GetShopDataByType(SHOP_TYPE.FREE_GIFT).storeItem local boughtNum = ShopManager.GetShopItemHadBuyTimes(SHOP_TYPE.FREE_GIFT, freeData[1].id) local limitNum = ShopManager.GetShopItemLimitBuyCount(freeData[1].id) local isCanBuy = limitNum - boughtNum >= 1 self.freeBtnAnim.enabled = isCanBuy self.redPoint:SetActive(isCanBuy) -- 光效显隐 for _, light in ipairs(self.lightList) do light:SetActive(isCanBuy) end CheckRedPointStatus(RedPointType.DailyGift) Util.AddOnceClick(self.freeBtn,function() if isCanBuy then ShopManager.RequestBuyShopItem(SHOP_TYPE.FREE_GIFT, freeData[1].id, 1, function() self:RefreshFreeData() CheckRedPointStatus(RedPointType.DailyGift) CheckRedPointStatus(RedPointType.GrowthPackage) end) end end) end function EveryDayGift:OnClose() if self.localTimer then self.localTimer:Stop() self.localTimer = nil end self.gameObject:SetActive(false) self.curObjPar.gameObject:SetActive(false) self.rectMask.gameObject:SetActive(false) self.parent.tabbox.gameObject:SetActive(true) end function EveryDayGift:OnDestroy() self.spLoader:Destroy() for k,v in pairs(self.ItemList) do SubUIManager.Close(v) end self.ItemList = {} if self.scrollView then SubUIManager.Close(self.scrollView) end self.scrollView=nil if self.localTimer then self.localTimer:Stop() self.localTimer = nil end if self.curLiveObj then poolManager:UnLoadLive(self.curLiveObj.name, self.curLiveObj) self.curLiveObj = nil end Util.ClearChild(self.curObjPar.transform) end --特权商城专属 function EveryDayGift:SpecialTime(t) if not t or t < 0 then return Language[11749] end local _sec = t % 60 local allMin = math.floor(t / 60) local _min = allMin % 60 local allHour = math.floor(t / 3600) local _hour = allHour % 24 local allDays = math.floor(t / 86400) if allDays>=1 then return string.format(Language[11703],allDays),allDays else if _hour>=1 then return string.format(Language[11704], _hour), _hour else if _min>=1 then return string.format(Language[11705], _min), _min else return Language[12152] end end end return Language[11749] end return EveryDayGift