local EveryDayGiftNew = {} local rechargeNum = 0 local growData = {} local rechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig) local onKeyPackId = 545 function EveryDayGiftNew:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = EveryDayGiftNew }) return b end --添加事件监听(用于子类重写) function EveryDayGiftNew:AddListener() Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess,self.SetGrowGift,self) end --移除事件监听(用于子类重写) function EveryDayGiftNew:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.MoneyPay.OnPayResultSuccess,self.SetGrowGift,self) end function EveryDayGiftNew:InitComponent() self.spLoader = SpriteLoader.New() Util.GetGameObject(self.gameObject, "rzyBg"):SetActive(false) Util.GetGameObject(self.gameObject, "curObj"):SetActive(false) Util.GetGameObject(self.gameObject, "GameObject"):SetActive(false) Util.GetGameObject(self.gameObject, "Image"):SetActive(true) self.newPage = Util.GetGameObject(self.gameObject, "newPage") self.newPage:SetActive(true) self.itemPre = Util.GetGameObject(self.newPage,"ItemPre") --===================成长礼包================ self.grow = Util.GetGameObject(self.newPage,"growPack/Content") self.tip = Util.GetGameObject(self.grow,"Tip"):GetComponent("Text") self.icon = Util.GetGameObject(self.grow,"Icon"):GetComponent("Image") self.Level = Util.GetGameObject(self.grow,"Icon/Level"):GetComponent("Text") self.name = Util.GetGameObject(self.grow,"Name"):GetComponent("Image") self.name.sprite=self.spLoader:LoadSprite("gm_mingwang_title") self.progress = Util.GetGameObject(self.grow,"Progress/Image") self.value = Util.GetGameObject(self.grow,"Progress/Text"):GetComponent("Text") self.reward = Util.GetGameObject(self.grow,"Reward") self.btnLeft = Util.GetGameObject(self.grow,"btnLeft") self.btnRight = Util.GetGameObject(self.grow,"btnRight") self.btnGet = Util.GetGameObject(self.grow,"btnGet") self.price = Util.GetGameObject(self.btnGet,"cost/Text"):GetComponent("Text") self.cost = Util.GetGameObject(self.btnGet,"cost") self.btnText = Util.GetGameObject(self.btnGet,"Text") self.btnRed = Util.GetGameObject(self.btnGet,"red") self.leftRed = Util.GetGameObject(self.btnLeft,"Red") self.rightRed = Util.GetGameObject(self.btnRight,"Red") --=================Rewards================= self.Reward = Util.GetGameObject(self.newPage,"Reward") self.Reward:GetComponent("RectTransform").sizeDelta = Vector2.New(1080,864.7) self.Reward:GetComponent("RectTransform").localPosition = Vector3.New(0,209,-100) self.endTimeBg = Util.GetGameObject(self.newPage,"growPack/Time") self.endTime = Util.GetGameObject(self.endTimeBg,"Text"):GetComponent("Text") self.ItemList = {} self.sortingOrder = 0 --=================extraTitle================ self.extarTitle = Util.GetGameObject(self.newPage,"extarTitle") self.extarTitle:SetActive(false) self.extarFreeBtn = Util.GetGameObject(self.extarTitle,"freeBtn") self.freeBtnAnim = Util.GetGameObject(self.extarFreeBtn,"UI_effect_TanSuo_Box"):GetComponent("Animator") self.freeBtnRed = Util.GetGameObject(self.extarFreeBtn,"redPoint") self.extarStoreBtn = Util.GetGameObject(self.extarTitle,"Bg/store") self.extarBg = Util.GetGameObject(self.extarTitle,"Bg") self.UI_Effect_jinkuang_Yuan = Util.GetGameObject(self.extarStoreBtn, "UI_Effect_jinkuang_Yuan") self.extarOneKeyBtn = Util.GetGameObject(self.extarTitle,"Bg/oneKey/oneKeyBtn") self.allSaoGuang = Util.GetGameObject(self.extarOneKeyBtn, "saoguang") self.extarOneKeyprice1 = Util.GetGameObject(self.extarTitle,"Bg/oneKey/nowPrice"):GetComponent("Text") self.extarOneKeyprice2 = Util.GetGameObject(self.extarTitle,"Bg/oneKey/oriPrice"):GetComponent("Text") self.jiantou=Util.GetGameObject(self.gameObject, "jiantou") 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"), } self.hintObj=Util.GetGameObject(self.gameObject, "hint") self.hintTxt=Util.GetGameObject(self.gameObject, "hint/Text"):GetComponent("Text") end function EveryDayGiftNew:BindEvent() Util.AddOnceClick(self.extarOneKeyBtn,function () if self.actType ~= FUNCTION_OPEN_TYPE.MeiRiLiBao then return end PayManager.Pay(onKeyPackId, function(id) FirstRechargeManager.RefreshAccumRechargeValue(onKeyPackId) PlayerPrefs.SetInt(PlayerManager.uid.."czlb", 0) CheckRedPointStatus(RedPointType.GrowthPackage) MonthCardManager.CheckMonthCardPatFace() self:RefreshData(nil,false,false) end) end) Util.AddOnceClick(self.extarStoreBtn,function() if self.actType ~= FUNCTION_OPEN_TYPE.MeiRiLiBao then return end JumpManager.GoJump(40020) end) end --界面打开时调用(用于子类重写) function EveryDayGiftNew:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent self.gameObject.name = "EveryDayGiftNew"..self.actConfig.Id if self.actConfig.Id==89 or self.actConfig.Id==61 or self.actConfig.Id==60 or self.actConfig.Id==67 then self.jiantou.gameObject:SetActive(true) local jiantouAnim = self.jiantou.gameObject:GetComponent(typeof(PlayFlyAnim)) jiantouAnim:PlayAnim(false) end end function EveryDayGiftNew:OnSortingOrderChange(_sortingOrder) self.sortingOrder = _sortingOrder Util.SetParticleSortLayer(self.UI_Effect_jinkuang_Yuan, _sortingOrder + 1) end -- 打开,重新打开时回调 function EveryDayGiftNew:OnShow(_sortingOrder) self.gameObject:SetActive(true) self.sortingOrder = _sortingOrder or self.sortingOrder 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 self.parent.tabbox.gameObject:SetActive(true) self:RefreshData(nil,true,true) end function EveryDayGiftNew:RefreshData(none,isTop,isAni) if self.actConfig.RpType > 0 then CheckRedPointStatus(self.actConfig.RpType) end --成长礼包检测,现在放到每个页签,所有都要检测 VipManager.SetGrowthPackagePointStatus() CheckRedPointStatus(RedPointType.GrowthPackage) self.shopData = DynamicActivityManager.GetGiftDataByType(self.actConfig.ShopData) --成长礼包 self:SetGrowGift() self.hintObj:SetActive(false) --特殊处理部分 Log("actType:"..tostring(self.actType)) if self.actType == FUNCTION_OPEN_TYPE.MeiRiLiBao then self.extarTitle:SetActive(true) --每日礼 self:RefreshFreeData() -- 刷新一键购买显示 self:RefreshOneKeyShow() self.Reward:GetComponent("RectTransform").sizeDelta = Vector2.New(1080,659) self.Reward:GetComponent("RectTransform").localPosition = Vector3.New(0,202,-100) end if self.actType == 98 then self.extarTitle:SetActive(true) self.extarBg:SetActive(false) self.hintObj:SetActive(true) self.hintTxt.text="特权只生效当前激活最高的特权,不会相互叠加" self:RefreshFreeData() end if not self.scrollView then --更改完空间大小后再生成滚动条 local rootHight = self.Reward.transform.rect.height local width = self.Reward.transform.rect.width self.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.Reward.transform, self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 10)) self.scrollView.moveTween.MomentumAmount = 1 self.scrollView.moveTween.Strength = 2 self.scrollView.elastic = false end -- 刷新剩余时间 self:GetRemainTime() -- 刷新商品数据 self:RefreshGiftData(isTop,isAni) end --==============================成长礼包部分==========================(rechargeViewNew和EveryDayGiftNew中有完全相同的部分,复制过去) function EveryDayGiftNew:SetGrowGift() growData = DynamicActivityManager.GetGiftDataByType({{2,95}}) local rechargeNum = BagManager.GetItemCountById(1351) --VipManager.GetChargedNum()--已经充值的金额 table.sort(growData,function (a,b) return a.data.shopItemData.BuyRule[2] < b.data.shopItemData.BuyRule[2] end) --LogError("DynamicActivityManager.curLevel=="..DynamicActivityManager.curLevel) --计算当前声望等级 if DynamicActivityManager.curLevel == 0 or DynamicActivityManager.curLevel == 1 then for i = 1, #growData do if rechargeNum < DynamicActivityManager.GetMingWangLv(growData[i].data.shopItemData.BuyRule[2]) then if rechargeNum ~= 0 then DynamicActivityManager.curLevel = i if DynamicActivityManager.Index == 0 then DynamicActivityManager.Index = DynamicActivityManager.curLevel end break else DynamicActivityManager.curLevel = 1 DynamicActivityManager.Index = 1 end end end end --如果所有都没有,说明超范围了 if DynamicActivityManager.curLevel == 0 then DynamicActivityManager.curLevel = #growData if DynamicActivityManager.Index == 0 then DynamicActivityManager.Index = DynamicActivityManager.curLevel end end Log("当前声望Level:"..tostring(DynamicActivityManager.curLevel).." Index:"..tostring(DynamicActivityManager.Index)) --如果有当前声望数据,就显示,没有就显示上一档位 -- local data = not not growData[DynamicActivityManager.Index] and growData[DynamicActivityManager.Index] or growData[DynamicActivityManager.Index-1] local data=growData[DynamicActivityManager.Index] if data==nil then return end self:RefreshReward(data) Util.AddOnceClick(self.btnLeft,function () if growData[DynamicActivityManager.Index - 1] then DynamicActivityManager.Index = DynamicActivityManager.Index - 1 self:RefreshReward(growData[DynamicActivityManager.Index]) end end) Util.AddOnceClick(self.btnRight,function () if growData[DynamicActivityManager.Index + 1] then DynamicActivityManager.Index = DynamicActivityManager.Index + 1 self:RefreshReward(growData[DynamicActivityManager.Index]) end end) end --刷新奖励、按钮显示 function EveryDayGiftNew:RefreshReward(Data) local rechargeNum =BagManager.GetItemCountById(1351) --VipManager.GetChargedNum()--已经充值的金额 self.btnLeft:SetActive(not not growData[DynamicActivityManager.Index - 1])--左按钮显示 self.btnRight:SetActive(not not growData[DynamicActivityManager.Index + 1])--右按钮显示 -- LogPink(DynamicActivityManager.Index.." 金额:"..tostring(Data.data.shopItemData.BuyRule[2]).." 限购:"..tostring(Data.data.limitNum).." 已购:"..tostring(Data.data.boughtNum).." rechargeNum:"..tostring(rechargeNum)) local text = 1 local num = 0 if DynamicActivityManager.Index < 2 then num = growData[1].data.shopItemData.BuyRule[2] elseif DynamicActivityManager.Index + 1 > #growData then text = #growData num = growData[#growData].data.shopItemData.BuyRule[2] else text = DynamicActivityManager.Index num = growData[DynamicActivityManager.Index].data.shopItemData.BuyRule[2] end num=DynamicActivityManager.GetMingWangLv(num) local aaa=growData[DynamicActivityManager.curLevel].data.shopItemData.BuyRule[2] if DynamicActivityManager.curLevel <= 2 then --self.tip.text = string.format("再获得%s积分升至名望1",num - rechargeNum) elseif DynamicActivityManager.curLevel >= #growData and rechargeNum >= DynamicActivityManager.GetMingWangLv(aaa) then --self.tip.text = "" else --self.tip.text = string.format("再获得%s积分升至名望%s",DynamicActivityManager.GetMingWangLv(aaa) - rechargeNum,DynamicActivityManager.curLevel+1) end self.tip.text="每充值1元可以获得10点名望经验" local size = rechargeNum/num size = size > 1 and 1 or size -- LogRed(DynamicActivityManager.Index.." #growData:"..tostring(#growData).." text:"..tostring(text)) self.icon.sprite = self.spLoader:LoadSprite("UI_hz_huizhang") self.Level.text=text self.progress:GetComponent("RectTransform").sizeDelta = Vector3.New(483*size,12,0) self.value.text = string.format("%s/%s",rechargeNum,num) self.price.text = Data.data.price self.btnRed:SetActive(false) local needNum=DynamicActivityManager.GetMingWangLv(Data.data.shopItemData.BuyRule[2]-1) if Data.data.limitNum - Data.data.boughtNum > 0 then self.btnText:SetActive(false) self.cost:SetActive(true) self.btnGet:GetComponent("Button").interactable = true Util.SetGray(self.btnGet, false) if rechargeNum >= needNum then -- self.btnGet:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_slbz_1anniuongse") if BagManager.GetTotalItemNum(Data.data.costId) >= Data.data.price then self.btnRed:SetActive(true) end else -- self.btnGet:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_slbz_1anniuhuangse") end else self.btnText:SetActive(true) self.cost:SetActive(false) self.btnGet:GetComponent("Button").interactable = false Util.SetGray(self.btnGet, true) end Util.AddOnceClick(self.btnGet,function () -- LogGreen(tostring(Data.data.limitNum).." "..tostring(Data.data.boughtNum)) if Data.data.limitNum - Data.data.boughtNum > 0 then -- LogYellow(tostring(rechargeNum).." "..tostring(Data.data.shopItemData.BuyRule[2])) if rechargeNum >= needNum then -- LogPink(tostring(BagManager.GetItemCountById(Data.data.costId)).." "..tostring(Data.data.price)) if BagManager.GetItemCountById(Data.data.costId) >= Data.data.price then -- LogBlue(tostring(Data.data.shopItemData.buyType).." "..tostring(Data.data.shopData.id)) ShopManager.RequestBuyShopItem(Data.buyType, Data.data.shopData.id, 1, function() self:SetGrowGift() CheckRedPointStatus(RedPointType.DailyGift) CheckRedPointStatus(RedPointType.GrowthPackage) end) else NotEnoughPopup:Show(Data.data.costId) end else PopupTipPanel.ShowTip(string.format("名望等级不足,请升至%s级后才可购买!",DynamicActivityManager.Index)) end end end) if not self.ItemList then self.ItemList = {} end for i = 1, #self.ItemList do self.ItemList[i].gameObject:SetActive(false) end for i = 1, #Data.data.shows do if not self.ItemList[i] then self.ItemList[i] = SubUIManager.Open(SubUIConfig.ItemView,self.reward.transform) end self.ItemList[i]:OnOpen(false, {Data.data.shows[i][1],Data.data.shows[i][2],Data.data.shows[i][3]}, 0.9,false,false,false,self.sortingOrder) self.ItemList[i].gameObject:SetActive(true) end --左右按钮红点检测 if growData[DynamicActivityManager.Index - 1] then for i = DynamicActivityManager.Index - 1, 1,-1 do local curData = growData[i] if curData.data.limitNum - curData.data.boughtNum > 0 and BagManager.GetTotalItemNum(curData.data.costId) >= curData.data.price and rechargeNum >=DynamicActivityManager.GetMingWangLv(curData.data.shopItemData.BuyRule[2]-1) then self.leftRed:SetActive(true) break else self.leftRed:SetActive(false) end end end if growData[DynamicActivityManager.Index + 1] then for i = DynamicActivityManager.Index + 1, 20 do local curData = growData[i] if curData and curData.data.limitNum - curData.data.boughtNum > 0 and BagManager.GetTotalItemNum(curData.data.costId) >= curData.data.price and rechargeNum >=DynamicActivityManager.GetMingWangLv(curData.data.shopItemData.BuyRule[2]-1) then self.rightRed:SetActive(true) break else self.rightRed:SetActive(false) end end end end --===============================通用礼包数据========================== -- 刷新礼包的数据 function EveryDayGiftNew:RefreshGiftData(isTop,isAni) rechargeNum = VipManager.GetChargedNum()--已经充值的金额 self.scrollView:ForeachItemGO(function(growIndex, go) go.gameObject:SetActive(false) end) local callBack = function(growIndex, item) self:RefreshShowData(item, self.shopData[growIndex],growIndex) end local growIndex = 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) growIndex = i break end end end if growIndex ~= 0 then break end end if growIndex ~= 0 then self.scrollView:SetIndex(growIndex) end end --刷新每一条的显示数据 function EveryDayGiftNew:RefreshShowData(item,_data,growIndex) 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 EveryDayGiftNew:GetRemainTime() if self.actConfig.ShowTime == 0 then self.endTimeBg.gameObject:SetActive(false) return end self.endTimeBg.gameObject:SetActive(true) --判断是否有timer if self.localTimer then self.localTimer:Stop() self.localTimer = nil end local la = self.actConfig.ShowTime ~= 1 and Language[10023] or Language[11355] if self.actConfig.ActiveType == ActivityTypeDef.XinRenShop then la = "结束时间:" end local freshTime = 0 --此时间是七日礼包刷新时间 -- local packFreshTime = 0 if self.shopData and #self.shopData > 0 then freshTime = self.shopData[#self.shopData].data.endTime - GetTimeStamp() end -- local actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.MeiRiTeHui) -- if actData then -- packFreshTime = actData.endTime - GetTimeStamp() -- end --灵兽宝阁的珍奇宝阁礼包刷新时间显示 if self.actId == 5501 then freshTime = TimeToCurWeekEnd() end self.endTime.text = la..TimeToFelaxible(freshTime) self.localTimer = Timer.New(function () self.endTime.text = la..TimeToFelaxible(freshTime) if freshTime <= 0 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) if id then self:RefreshData(nil,true,true) else self.parent:ClosePanel() end end self:RefreshData(nil,true,true) end -- if actData then -- self.btn2Text.text = string.format("剩余%s天",math.ceil(packFreshTime/86400)) -- else -- self.btn2Text.text = string.format("60元七天特惠") -- end freshTime = freshTime - 1 -- packFreshTime = packFreshTime - 1 end, 1, -1, true) self.localTimer:Start() end --==============================每日特惠特殊处理部分=================== --刷新一键购买显示 function EveryDayGiftNew:RefreshOneKeyShow() Util.SetParticleSortLayer(self.UI_Effect_jinkuang_Yuan, self.sortingOrder + 1) Util.SetGray(self.extarOneKeyBtn,false) self.extarOneKeyBtn:GetComponent("Button").interactable = true self.allSaoGuang:SetActive(false) -- 计算总价 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,onKeyPackId).Price) self.extarOneKeyprice2.text = Language[10582] .. string.format(MoneyUtil.GetMoneyUnitName(),ori) self.extarOneKeyprice1.text = Language[10644] .. string.format(MoneyUtil.GetMoneyUnitName(),now) for i = 1, #self.shopData do if self.shopData[i].data.boughtNum > 0 then Util.SetGray(self.extarOneKeyBtn,true) self.extarOneKeyBtn:GetComponent("Button").interactable = false self.allSaoGuang:SetActive(false) break end end end --刷新每日免费礼包 function EveryDayGiftNew:RefreshFreeData() local type=0 if self.actType==90 then type=SHOP_TYPE.FREE_GIFT elseif self.actType==98 then type=35 end local freeData = ShopManager.GetShopDataByType(type).storeItem local boughtNum = ShopManager.GetShopItemHadBuyTimes(type, freeData[1].id) local limitNum = ShopManager.GetShopItemLimitBuyCount(freeData[1].id) --LogError("freeData[1].id=="..freeData[1].id) local isCanBuy = limitNum - boughtNum >= 1 self.freeBtnAnim.enabled = isCanBuy self.freeBtnRed:SetActive(isCanBuy) -- 光效显隐 for _, light in ipairs(self.lightList) do light:SetActive(isCanBuy) end CheckRedPointStatus(RedPointType.DailyGift) Util.AddOnceClick(self.extarFreeBtn,function() if isCanBuy then ShopManager.RequestBuyShopItem(type, freeData[1].id, 1, function() self:RefreshFreeData() CheckRedPointStatus(RedPointType.DailyGift) CheckRedPointStatus(RedPointType.GrowthPackage) end) end end) end --============================================================================================ function EveryDayGiftNew:OnClose() CheckRedPointStatus(RedPointType.TimeLimitWishStore) if self.localTimer then self.localTimer:Stop() self.localTimer = nil end self.gameObject:SetActive(false) self.parent.tabbox.gameObject:SetActive(true) end function EveryDayGiftNew: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 end --特权商城专属 function EveryDayGiftNew: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 EveryDayGiftNew