472 lines
18 KiB
Lua
472 lines
18 KiB
Lua
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
|
||
DynamicActivityManager.curLevel = i
|
||
if DynamicActivityManager.Index == 0 then
|
||
DynamicActivityManager.Index = DynamicActivityManager.curLevel
|
||
end
|
||
break
|
||
end
|
||
end
|
||
end
|
||
--如果所有都没有,说明超范围了
|
||
if DynamicActivityManager.curLevel == 0 then
|
||
DynamicActivityManager.curLevel = #growData
|
||
if DynamicActivityManager.Index == 0 then
|
||
DynamicActivityManager.curLevel = DynamicActivityManager.Index
|
||
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 = DynamicActivityManager.Index
|
||
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)
|
||
end
|
||
|
||
local size = rechargeNum/num
|
||
size = size > 1 and 1 or size
|
||
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
|
||
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 |