miduo_client/Assets/ManagedResources/~Lua/Modules/Recharge/View/EveryDayGiftNew.lua

486 lines
19 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

local EveryDayGiftNew = {}
local rechargeNum = 0
local growData = {}
local rechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
local onKeyPackId = 1008
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(false)
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.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")
--=================Rewards=================
self.Reward = Util.GetGameObject(self.newPage,"Reward")
self.Button = Util.GetGameObject(self.newPage,"Button")
self.btn1 = Util.GetGameObject(self.Button,"btn1")
self.btn1Red = Util.GetGameObject(self.btn1,"red")
self.btn2 = Util.GetGameObject(self.Button,"btn2")
self.btn2Text = Util.GetGameObject(self.btn2,"Text"):GetComponent("Text")
self.endTimeBg = Util.GetGameObject(self.newPage,"growPack/Time")
self.endTime = Util.GetGameObject(self.endTimeBg,"Text"):GetComponent("Text")
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
self.ItemList = {}
self.sortingOrder = 0
end
function EveryDayGiftNew:BindEvent()
Util.AddOnceClick(self.btn2,function ()
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)
end
--界面打开时调用(用于子类重写)
function EveryDayGiftNew:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
self.gameObject.name = "EveryDayGiftNew"..self.actConfig.Id
end
function EveryDayGiftNew:OnSortingOrderChange(_sortingOrder)
self.sortingOrder = _sortingOrder
end
-- 打开,重新打开时回调
function EveryDayGiftNew:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
self.Button:SetActive(false)
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:GetRemainTime()
-- 刷新商品数据
self:RefreshGiftData(isTop,isAni)
--特殊处理部分
Log("actType:"..tostring(self.actType))
if self.actType == FUNCTION_OPEN_TYPE.MeiRiLiBao then
self.Button:SetActive(true)
--每日礼
self:RefreshFreeData()
-- 刷新一键购买显示
self:RefreshOneKeyShow()
end
end
--==============================成长礼包部分==========================(rechargeViewNew中有完全相同的部分复制过去)
function EveryDayGiftNew:SetGrowGift()
growData = DynamicActivityManager.GetGiftDataByType({{2,20}})
local rechargeNum = VipManager.GetChargedNum()--已经充值的金额
table.sort(growData,function (a,b)
return a.data.shopItemData.BuyRule[2] < b.data.shopItemData.BuyRule[2]
end)
--计算当前声望等级
if DynamicActivityManager.curLevel == 0 then
for i = 1, #growData do
if rechargeNum < 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]
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 = 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 = 0
local num = 0
if DynamicActivityManager.Index < 2 then
num = growData[2].data.shopItemData.BuyRule[2]
elseif DynamicActivityManager.Index + 1 > #growData then
text = #growData-1
num = growData[#growData].data.shopItemData.BuyRule[2]
else
text = DynamicActivityManager.Index-1
num = growData[DynamicActivityManager.Index].data.shopItemData.BuyRule[2]
end
if DynamicActivityManager.curLevel <= 2 then
self.tip.text = string.format("再充值%s元升至名望1",growData[2].data.shopItemData.BuyRule[2] - rechargeNum)
elseif DynamicActivityManager.curLevel + 1 > #growData then
self.tip.text = ""
else
self.tip.text = string.format("再充值%s元升至名望%s",growData[DynamicActivityManager.curLevel].data.shopItemData.BuyRule[2] - rechargeNum,DynamicActivityManager.curLevel-1)
end
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("t_tequan_vip"..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)
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 >= Data.data.shopItemData.BuyRule[2] then
self.btnGet:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_slbz_1anniuongse")
if Data.data.shopItemData.BuyRule[2] == 0 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 >= Data.data.shopItemData.BuyRule[2] then
-- LogPink(tostring(BagManager.GetItemCountById(Data.data.costId)).." "..tostring(Data.data.shopItemData.BuyRule[2]))
if BagManager.GetItemCountById(Data.data.costId) >= Data.data.shopItemData.BuyRule[2] 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(Language[11701])
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
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]
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(89)
if actData then
packFreshTime = actData.endTime - GetTimeStamp()
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.SetGray(self.btn2,false)
for i = 1, #self.shopData do
if self.shopData[i].data.boughtNum > 0 then
Util.SetGray(self.btn2,true)
self.btn2:GetComponent("Button").interactable = false
return
end
end
local actData = ActivityGiftManager.GetActivityTypeInfo(89)
if actData then
Util.SetGray(self.btn2,true)
self.btn2:GetComponent("Button").interactable = false
self.btn2Text.text = string.format("剩余%s天",math.ceil((actData.endTime - GetTimeStamp())/86400))
else
Util.SetGray(self.btn2,false)
self.btn2:GetComponent("Button").interactable = true
self.btn2Text.text = string.format("60元七天特惠")
end
end
--刷新每日免费礼包
function EveryDayGiftNew:RefreshFreeData()
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.btn1Red:SetActive(isCanBuy)
Util.SetGray(self.btn1,not isCanBuy)
CheckRedPointStatus(RedPointType.DailyGift)
Util.AddOnceClick(self.btn1,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 EveryDayGiftNew:OnClose()
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
DynamicActivityManager.curLevel = 0
DynamicActivityManager.Index = 0
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