758 lines
30 KiB
Lua
758 lines
30 KiB
Lua
local GiftPackPage = quick_class("GiftPackPage")
|
|
local shopItemConfig = ConfigManager.GetConfig(ConfigName.StoreConfig)
|
|
local rechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
|
local giftType = {
|
|
[1] = DirectBuyType.DAILY_GIFT,
|
|
[2] = DirectBuyType.WEEK_GIFT,
|
|
[3] = DirectBuyType.MONTH_GIFT,
|
|
[4] = DirectBuyType.FINDTREASURE_GIFT,--SHOP_TYPE.FINDTREASURE_GIFT 第四个页签是由 两个道具商品 和 一个直购商品组成 数据不一样
|
|
}
|
|
local DataType={
|
|
Shop = 1,--商品
|
|
Direct = 2,--直购
|
|
}
|
|
|
|
local parent
|
|
local noviceScrollViewIndex = 0
|
|
local ItemListIndex = 0
|
|
--新手礼包标题图片名
|
|
local NoviceGiftTitle={"l_lb_mengxin","l_lb_yuanqi","l_lb_chengzahng","l_lb_wushaung","l_lb_rongyao","l_lb_dengfeng"}
|
|
|
|
function GiftPackPage:ctor(mainPanel, gameObject)
|
|
self.mainPanel = mainPanel
|
|
parent = mainPanel
|
|
self.gameObject = gameObject
|
|
self:InitComponent(gameObject)
|
|
self:BindEvent()
|
|
self.ItemList = {}
|
|
self.NoviceItemList={}
|
|
end
|
|
|
|
function GiftPackPage:InitComponent(gameObject)
|
|
self.spLoader = SpriteLoader.New()
|
|
self.itemPre = Util.GetGameObject(gameObject, "rzyBg/ItemPre")
|
|
self.bg = Util.GetGameObject(gameObject, "rzyBg")
|
|
self.dayGiftIcon=Util.GetGameObject(gameObject,"rzyBg/bg/Image (1)")
|
|
self.freeBtn=Util.GetGameObject(gameObject,"rzyBg/freeBtn")
|
|
self.freeBtnAnim=Util.GetGameObject(gameObject,"rzyBg/freeBtn/UI_effect_TanSuo_Box"):GetComponent("Animator")
|
|
self.redPoint=Util.GetGameObject(gameObject,"rzyBg/freeBtn/redPoint")
|
|
self.endTime = Util.GetGameObject(gameObject, "rzyBg/endTime"):GetComponent("Text")
|
|
self.endTimeBg = Util.GetGameObject(gameObject, "rzyBg/bg/Image")
|
|
self.scrollItem = Util.GetGameObject(gameObject, "rzyBg/scrollItem")
|
|
self.lightList = {
|
|
Util.GetGameObject(self.freeBtnAnim.transform,"bg_ray"),
|
|
Util.GetGameObject(self.freeBtnAnim.transform,"yinying/ray 1"),
|
|
Util.GetGameObject(self.freeBtnAnim.transform,"yinying/ray 2"),
|
|
Util.GetGameObject(self.freeBtnAnim.transform,"yinying/ray 3"),
|
|
Util.GetGameObject(self.freeBtnAnim.transform,"yinying/ray 4"),
|
|
}
|
|
|
|
self.btnDaily = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/daily")
|
|
self.dailyUnchoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/daily/unchoose")
|
|
self.dailyChoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/daily/choose")
|
|
self.dailyText = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/daily/Text"):GetComponent("Text")
|
|
|
|
self.btnWeek = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/week")
|
|
self.WeekUnchoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/week/unchoose")
|
|
self.WeekChoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/week/choose")
|
|
self.WeekText = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/week/Text"):GetComponent("Text")
|
|
|
|
self.btnMonth = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/month")
|
|
self.MonthUnchoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/month/unchoose")
|
|
self.MonthChoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/month/choose")
|
|
self.MonthText = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/month/Text"):GetComponent("Text")
|
|
|
|
self.btnShop=Util.GetGameObject(gameObject,"rzyBg/btnTypeGroup/shop")
|
|
self.shopUnchoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/shop/unchoose")
|
|
self.shopChoose = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/shop/choose")
|
|
self.shopText = Util.GetGameObject(gameObject, "rzyBg/btnTypeGroup/shop/Text"):GetComponent("Text")
|
|
|
|
-- 设置循环滚动,万一礼包内容不停地加
|
|
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.cardTypeBtn = {
|
|
[1] = { btn = self.btnDaily, choose = self.dailyChoose, unchoose = self.dailyUnchoose, text = self.dailyText },
|
|
[2] = { btn = self.btnWeek, choose = self.WeekChoose, unchoose = self.WeekUnchoose, text = self.WeekText },
|
|
[3] = { btn = self.btnMonth, choose = self.MonthChoose, unchoose = self.MonthUnchoose, text = self.MonthText },
|
|
[4] = {btn=self.btnShop,choose=self.shopChoose,unchoose=self.shopUnchoose,text=self.shopText}
|
|
}
|
|
|
|
---新手礼包---
|
|
self.noviceBg=Util.GetGameObject(gameObject,"noviceBg")
|
|
self.giftsGroup=Util.GetGameObject(self.noviceBg,"giftsGroup")
|
|
self.noviceItemPre=Util.GetGameObject(self.noviceBg,"itemPre")
|
|
self.countDown=Util.GetGameObject(self.noviceBg,"countDown"):GetComponent("Text")
|
|
|
|
self.noviceScrollView=SubUIManager.Open(SubUIConfig.ScrollCycleView,self.giftsGroup.transform,self.noviceItemPre,
|
|
nil,Vector2.New(self.giftsGroup.transform.rect.width,self.giftsGroup.transform.rect.height),1,1,Vector2.New(0,25))
|
|
self.noviceScrollView.moveTween.MomentumAmount = 1
|
|
self.noviceScrollView.moveTween.Strength = 2
|
|
end
|
|
|
|
function GiftPackPage:BindEvent()
|
|
for type = 1, 4 do
|
|
Util.AddClick(self.cardTypeBtn[type].btn, function()
|
|
-- 选择的直购没开,则直接返回 4 时有商品和直购
|
|
local curDataIsActive = false
|
|
local allDatas = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
|
for i = 1, #allDatas do
|
|
if rechargeCommodityConfig[allDatas[i].goodsId].ShowType == giftType[type] then
|
|
curDataIsActive = true
|
|
end
|
|
end
|
|
if type ~= 4 then
|
|
if not curDataIsActive then
|
|
PopupTipPanel.ShowTip(Language[11354])
|
|
return
|
|
end
|
|
else
|
|
if not ShopManager.IsActive(SHOP_TYPE.FINDTREASURE_GIFT) and not curDataIsActive then
|
|
PopupTipPanel.ShowTip(Language[11354])
|
|
return
|
|
end
|
|
end
|
|
-- 点击已经选择的界面,则不刷新
|
|
if type == self.choooseTab then
|
|
return
|
|
end
|
|
self:RefreshData(type)
|
|
-- 刷新页签
|
|
self:RefreshBtnShow(type)
|
|
self.scrollView:SetIndex(1)
|
|
end)
|
|
end
|
|
end
|
|
|
|
local sortingOrder = 0
|
|
local extra=nil
|
|
function GiftPackPage:OnShow(_sortingOrder,extraTab)
|
|
sortingOrder = _sortingOrder
|
|
extra=extraTab
|
|
self:OnShowPanelData()
|
|
end
|
|
|
|
function GiftPackPage:OnShowPanelData()
|
|
self.gameObject:SetActive(true)
|
|
ShopManager.isOpenNoviceGift=true
|
|
CheckRedPointStatus(RedPointType.DailyGift)
|
|
if ShopManager.IsActive(SHOP_TYPE.NOVICE_GIFT_SHOP) and ShopManager.CheckNoviceGiftData() then
|
|
--新手礼包
|
|
self.bg:SetActive(false)
|
|
self.noviceBg:SetActive(true)
|
|
self:SetNoviceGiftData()
|
|
self.noviceScrollView:SetIndex(1)
|
|
else
|
|
--日周月礼包
|
|
BindRedPointObject(RedPointType.DailyGift, Util.GetGameObject(self.btnDaily, "redPoint"))
|
|
self.bg:SetActive(true)
|
|
self.noviceBg:SetActive(false)
|
|
self:RefreshData(extra and extra or 1)
|
|
self:RefreshBtnShow(extra and extra or 1)
|
|
end
|
|
end
|
|
|
|
function GiftPackPage:OnSortingOrderChange(cursortingOrder)
|
|
for i, v in pairs(self.ItemList) do
|
|
for j = 1, #self.ItemList[i] do
|
|
self.ItemList[i][j]:SetEffectLayer(cursortingOrder)
|
|
end
|
|
end
|
|
for i, v in pairs(self.NoviceItemList) do
|
|
for j = 1, #self.NoviceItemList[i] do
|
|
self.NoviceItemList[i][j]:SetEffectLayer(cursortingOrder)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 根据选择的页签刷新数据
|
|
function GiftPackPage:RefreshData(type)
|
|
-- 当前选中的页签
|
|
self.choooseTab = type
|
|
CheckRedPointStatus(RedPointType.GrowthPackage)
|
|
-- 刷新商品数据
|
|
self:RefreshGiftData(type)
|
|
-- 刷新剩余时间
|
|
self:GetRemainTime()
|
|
end
|
|
|
|
-- 刷新礼包的数据
|
|
function GiftPackPage:RefreshGiftData(type)
|
|
local shopData = {}
|
|
if type ~= 4 then
|
|
--这个界面 普通商品只有 GoodsTypeDef.DirectPurchaseGift
|
|
shopData = self:ResetShopData(OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift), type,DataType.Direct)
|
|
table.sort(shopData,function(a,b)
|
|
if a.sortId == b.sortId then
|
|
return a.data.goodsId < b.data.goodsId
|
|
else
|
|
return a.sortId > b.sortId
|
|
end
|
|
end)
|
|
else
|
|
--两部分组成 寻宝特权在商品里 极速探索礼包在直购里
|
|
local topspeedData = self:ResetShopData(ShopManager.GetShopDataByType(SHOP_TYPE.FINDTREASURE_GIFT).storeItem, type,DataType.Shop)
|
|
shopData = self:ResetShopData(OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift), type,DataType.Direct)
|
|
for i = 1, #topspeedData do
|
|
table.insert(shopData,topspeedData[i])
|
|
end
|
|
table.sort(shopData,function(a,b)
|
|
return a.sortId < b.sortId
|
|
end)
|
|
end
|
|
local callBack = function(index, item)
|
|
ItemListIndex = index
|
|
self:RefreshShowData(item, shopData[index].data, type, shopData[index].DataType)
|
|
end
|
|
self.scrollView:SetData(shopData, callBack)
|
|
|
|
self:RefreshFreeData(type)
|
|
end
|
|
|
|
-- 商店数据重组
|
|
function GiftPackPage:ResetShopData(shopData, type,DataTypeIndex)
|
|
local newData = {}
|
|
local boughtNum = 0
|
|
local limitNum = 0
|
|
for i = 1, #shopData do
|
|
if DataTypeIndex == DataType.Shop then
|
|
boughtNum = ShopManager.GetShopItemHadBuyTimes(SHOP_TYPE.FINDTREASURE_GIFT, shopData[i].id)
|
|
limitNum = ShopManager.GetShopItemLimitBuyCount(shopData[i].id)
|
|
local curSortId = 0--临时一个数值 只用做排序用
|
|
if limitNum == -1 then
|
|
curSortId = 3
|
|
elseif limitNum - boughtNum > 0 then
|
|
curSortId = 2
|
|
end
|
|
--DataTypeIndex 1 商品 2 直购商品
|
|
newData[#newData + 1] = {data = shopData[i],DataType = DataTypeIndex,sortId = curSortId}
|
|
elseif DataTypeIndex == DataType.Direct then
|
|
--所有直购 进行筛选 类型一致的取出
|
|
if rechargeCommodityConfig[shopData[i].goodsId].ShowType == giftType[type] then
|
|
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, shopData[i].goodsId)
|
|
limitNum = rechargeCommodityConfig[ shopData[i].goodsId].Limit
|
|
local curSortId = 0--临时一个数值 只用做排序用
|
|
if limitNum == -1 then
|
|
curSortId = 2
|
|
elseif limitNum - boughtNum > 0 then
|
|
curSortId = 1
|
|
end
|
|
--DataTypeIndex 1 商品 2 直购商品
|
|
newData[#newData + 1] = {data = shopData[i],DataType = DataTypeIndex,sortId = curSortId}
|
|
end
|
|
end
|
|
end
|
|
return newData
|
|
end
|
|
|
|
--每种礼包的剩余时间
|
|
function GiftPackPage:GetRemainTime()
|
|
self.endTimeBg:SetActive(self.choooseTab ~= 4)--页签四 没有倒计时
|
|
if self.choooseTab == 4 then
|
|
if self.localTimer then
|
|
self.localTimer:Stop()
|
|
self.localTimer = nil
|
|
end
|
|
self.endTime.text= ""
|
|
return
|
|
end--特权不显示时间
|
|
local localSelf = self
|
|
local freshTime = 0
|
|
--所有直购在一起 取相应类型直购第一个时间显示倒计时
|
|
local datalist = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
|
for i = 1, #datalist do
|
|
if rechargeCommodityConfig[datalist[i].goodsId].ShowType == giftType[self.choooseTab] then
|
|
if freshTime <= 0 then
|
|
freshTime = datalist[i].endTime
|
|
end
|
|
end
|
|
end
|
|
if freshTime and freshTime > 0 then
|
|
else
|
|
return
|
|
end
|
|
local UpDate = function()
|
|
if not localSelf.localTimer then
|
|
return
|
|
end
|
|
local showfreshTime = freshTime - GetTimeStamp()
|
|
--if freshType == 1 then
|
|
-- freshTime = ShopManager.GetShopCloseTime(shopType)
|
|
--else
|
|
-- freshTime = ShopManager.GetShopRefreshLeftTime(shopType)
|
|
--end
|
|
if showfreshTime > 0 then
|
|
-- 剩余小时
|
|
local formatTime, leftHour = TimeToHMS(showfreshTime)
|
|
if leftHour > 24 then
|
|
self.endTime.text = Language[11355]..TimeToDHMS(showfreshTime)
|
|
else
|
|
self.endTime.text = Language[11355]..self:TimeToHMS(showfreshTime)
|
|
end
|
|
elseif showfreshTime == 0 then
|
|
-- 时间到刷一下数据
|
|
Log("刷新时间到了")
|
|
self:RefreshGiftData(self.choooseTab)
|
|
elseif showfreshTime==-1 then --不刷新显示内容
|
|
self.endTime.text=""
|
|
end
|
|
end
|
|
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
|
|
|
|
UpDate()
|
|
end
|
|
|
|
--刷新每日免费礼包
|
|
function GiftPackPage:RefreshFreeData(type)
|
|
|
|
local isDaily = type == DirectBuyType.DAILY_GIFT
|
|
self.freeBtn:SetActive(isDaily)
|
|
self.dayGiftIcon:SetActive(isDaily)
|
|
|
|
|
|
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 = false--limitNum - boughtNum >= 1
|
|
self.freeBtnAnim.enabled=isCanBuy
|
|
self.redPoint:SetActive(isCanBuy)
|
|
-- 光效显隐
|
|
for _, light in ipairs(self.lightList) do
|
|
light:SetActive(isCanBuy)
|
|
end
|
|
|
|
local costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FREE_GIFT, freeData[1].id, 1)
|
|
CheckRedPointStatus(RedPointType.DailyGift)
|
|
Util.AddOnceClick(self.freeBtn,function()
|
|
if isCanBuy then
|
|
self:BuyAction(costId, finalNum, SHOP_TYPE.FREE_GIFT, freeData[1].id, type)
|
|
end
|
|
end)
|
|
end
|
|
|
|
--刷新每一条的显示数据
|
|
function GiftPackPage:RefreshShowData(item, data, type, DataTypeIndex)
|
|
--绑定组件
|
|
local name = Util.GetGameObject(item, "context/text"):GetComponent("Text")
|
|
local tip1=Util.GetGameObject(item,"tip/tip1"):GetComponent("Image")
|
|
local tip1Text1=Util.GetGameObject(item,"tip/tip1/text1"):GetComponent("Text")
|
|
local tip1Text2=Util.GetGameObject(item,"tip/tip1/text2"):GetComponent("Text")
|
|
local tip2=Util.GetGameObject(item,"tip/tip2"):GetComponent("Image")
|
|
local tip2Text=Util.GetGameObject(item,"tip/tip2/text"):GetComponent("Text")
|
|
local icon = Util.GetGameObject(item, "btnBuy/icon")
|
|
local price = Util.GetGameObject(item, "btnBuy/price"):GetComponent("Text")
|
|
local buyInfo = Util.GetGameObject(item, "buyInfo"):GetComponent("Text")
|
|
local btnBuy = Util.GetGameObject(item, "btnBuy")
|
|
local grid = Util.GetGameObject(item, "scrollView/grid")
|
|
local shadow=Util.GetGameObject(item,"shadow")
|
|
local tipImage=Util.GetGameObject(item,"tipImage")
|
|
local tipImageText=Util.GetGameObject(item,"tipImage/Text"):GetComponent("Text")
|
|
--local redPoint = Util.GetGameObject(btnBuy, "redPoint")
|
|
|
|
-- 物品Item
|
|
local shows
|
|
local shopItemData
|
|
-- 购买数量与限购数量
|
|
local boughtNum = 0
|
|
local limitNum = 0
|
|
local costId, finalNum, oriCostNum
|
|
--道具商品 和 直购商品 获取数据的地方不一致
|
|
if DataTypeIndex == DataType.Shop then
|
|
shopItemData = shopItemConfig[data.id]
|
|
--shows = ShopManager.GetShopItemGoodsInfo(data.id)
|
|
shows = shopItemData.Goods
|
|
name.text = GetLanguageStrById(shopItemData.GoodsName)
|
|
-- 设置立赠提示
|
|
tip1.gameObject:SetActive(shopItemData.Goods[1][1] == 16 )
|
|
tip2.gameObject:SetActive(shopItemData.Goods[1][1] ~= 16)
|
|
tip1Text1.text=shopItemData.Goods[1][2]
|
|
tip1Text2.text=shopItemData.Rebate
|
|
tip2Text.text=shopItemData.Rebate
|
|
boughtNum = ShopManager.GetShopItemHadBuyTimes(SHOP_TYPE.FINDTREASURE_GIFT, data.id)
|
|
limitNum = ShopManager.GetShopItemLimitBuyCount(data.id)
|
|
costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FINDTREASURE_GIFT, data.id, 1)
|
|
tipImage:SetActive(type == 4)
|
|
if type == 4 then
|
|
tipImageText.text = Language[11356]
|
|
end
|
|
else
|
|
shopItemData = rechargeCommodityConfig[data.goodsId]
|
|
--shows = OperatingManager.GetGiftGoodsInfo(giftType[type], data.id)
|
|
shows = shopItemData.RewardShow
|
|
name.text = GetLanguageStrById(shopItemData.Name)
|
|
-- 设置立赠提示
|
|
tip1.gameObject:SetActive(shopItemData.RewardShow[1][1] == 16 )
|
|
tip2.gameObject:SetActive(shopItemData.RewardShow[1][1] ~= 16)
|
|
tip1Text1.text=shopItemData.RewardShow[1][2]
|
|
tip1Text2.text=shopItemData.Rebate
|
|
tip2Text.text=shopItemData.Rebate
|
|
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, data.goodsId)
|
|
limitNum = shopItemData.Limit
|
|
--limitNum = OperatingManager.GetLeftBuyTime(GoodsTypeDef.DirectPurchaseGift,data.goodsId)
|
|
costId, finalNum, oriCostNum = nil,MoneyUtil.GetMoney(shopItemData.Price),nil
|
|
tipImage:SetActive(type == 4)
|
|
if type == 4 then
|
|
tipImageText.text = Language[11357]
|
|
end
|
|
end
|
|
|
|
--滚动条复用重设itemview
|
|
if self.ItemList[item] then
|
|
for i = 1, 4 do
|
|
self.ItemList[item][i].gameObject:SetActive(false)
|
|
end
|
|
for i = 1, #shows do
|
|
if self.ItemList[item][i] then
|
|
self.ItemList[item][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
|
|
self.ItemList[item][i].gameObject:SetActive(true)
|
|
end
|
|
end
|
|
else
|
|
self.ItemList[item]={}
|
|
for i = 1, 4 do
|
|
self.ItemList[item][i] = SubUIManager.Open(SubUIConfig.ItemView, grid.transform)
|
|
self.ItemList[item][i].gameObject:SetActive(false)
|
|
local obj= newObjToParent(shadow,self.ItemList[item][i].transform)
|
|
obj.transform:SetAsFirstSibling()
|
|
obj.transform:DOAnchorPos(Vector3(0,-3,0),0)
|
|
obj:GetComponent("RectTransform").transform.localScale=Vector3.one*1.1
|
|
obj.gameObject:SetActive(true)
|
|
end
|
|
for i = 1, #shows do
|
|
self.ItemList[item][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
|
|
self.ItemList[item][i].gameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
|
|
-- 设置按钮状态
|
|
local isCanBuy = limitNum - boughtNum >0
|
|
btnBuy:GetComponent("Button").interactable = isCanBuy
|
|
Util.SetGray(btnBuy,not isCanBuy)
|
|
icon:GetComponent("Image").enabled=isCanBuy
|
|
if isCanBuy then
|
|
if DataTypeIndex == DataType.Shop then
|
|
icon:SetActive(true)
|
|
icon:GetComponent("Image").sprite = SetIcon(self.spLoader, shopItemData.Cost[1][1])
|
|
price.alignment="MiddleRight"
|
|
--根据数字位数做效果适配
|
|
local str=""
|
|
local index= string.len(tostring(finalNum))
|
|
if index<=2 then
|
|
str=" "
|
|
elseif index>2 and index<=4 then
|
|
str=" "
|
|
else
|
|
str=" "
|
|
end
|
|
price.text = string.format(MoneyUtil.GetMoneyUnitName(),MoneyUtil.GetMoney(finalNum))..str
|
|
else
|
|
local str=""
|
|
local index= string.len(tostring(finalNum))
|
|
if index<=1 then
|
|
str=" "
|
|
elseif index>=2 and index<4 then
|
|
str=" "
|
|
else
|
|
str=" "
|
|
end
|
|
icon:SetActive(false)
|
|
price.text = string.format(MoneyUtil.GetMoneyUnitName(),MoneyUtil.GetMoney(finalNum))..str--..Language[11358]
|
|
end
|
|
buyInfo.text = Language[10513]..limitNum - boughtNum .. "/" .. limitNum..Language[11359] --limitNum == -1 and "" or limitNum - boughtNum .. "/" .. limitNum
|
|
else
|
|
price.alignment="MiddleCenter"
|
|
price.text=Language[10514]
|
|
buyInfo.text=Language[10513].."<color=red>"..limitNum - boughtNum.."</color>".. "/" .. limitNum..Language[11359]
|
|
end
|
|
-- 红点
|
|
--redPoint:SetActive(finalNum == 0 and isCanBuy)
|
|
-- 请求购买
|
|
Util.AddOnceClick(btnBuy, function()
|
|
if not isCanBuy then
|
|
PopupTipPanel.ShowTip(Language[10515])
|
|
else
|
|
--道具商品
|
|
if DataTypeIndex == DataType.Shop then
|
|
self:BuyAction(costId, finalNum, SHOP_TYPE.FINDTREASURE_GIFT, data.id, type)
|
|
else
|
|
--直购商品
|
|
PayManager.Pay(data.goodsId, function(id)
|
|
FirstRechargeManager.RefreshAccumRechargeValue(data.goodsId)
|
|
OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DirectPurchaseGift, data.goodsId)
|
|
self:RefreshGiftData(type)
|
|
CheckRedPointStatus(RedPointType.DailyGift)
|
|
end)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
--购买点击事件
|
|
function GiftPackPage:BuyAction(costId, costNum, shopType, itemId, tabType)
|
|
local haveNum = BagManager.GetItemCountById(costId)
|
|
local costName = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig, costId).Name)
|
|
Log("需要消耗的道具ID" .. costId)
|
|
if haveNum < costNum then
|
|
NotEnoughPopup:Show(costId)
|
|
else
|
|
local isPopUp = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .. shopType)
|
|
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
|
|
if (isPopUp ~= currentTime and costNum ~= 0) then
|
|
local str = string.format(Language[11360], costNum, costName)
|
|
MsgPanel.ShowTwo(str, function()
|
|
end, function(isShow)
|
|
if (isShow) then
|
|
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
|
|
RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. shopType, currentTime)
|
|
end
|
|
ShopManager.RequestBuyShopItem(shopType, itemId, 1, function()
|
|
self:RefreshGiftData(tabType)
|
|
CheckRedPointStatus(RedPointType.DailyGift)
|
|
|
|
end) end, Language[10731], Language[10732],nil,true)
|
|
else
|
|
ShopManager.RequestBuyShopItem(shopType, itemId, 1, function()
|
|
self:RefreshGiftData(tabType)
|
|
CheckRedPointStatus(RedPointType.DailyGift)
|
|
end)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
local btnText = {
|
|
[1] = Language[11361],
|
|
[2] = Language[11362],
|
|
[3] = Language[11363],
|
|
[4] = Language[11364],
|
|
}
|
|
|
|
-- 刷新页签按钮显示
|
|
function GiftPackPage:RefreshBtnShow(type)
|
|
for i = 1, 4 do
|
|
local btnInfo = self.cardTypeBtn[i]
|
|
btnInfo.choose:SetActive(i == type)
|
|
btnInfo.unchoose:SetActive(i ~= type)
|
|
local color = i == type and "D7D7BF" or "473F3C"
|
|
btnInfo.text.text = string.format("<color=#%s>%s</color>", color, btnText[i])
|
|
end
|
|
end
|
|
|
|
function GiftPackPage:OnHide()
|
|
self.gameObject:SetActive(false)
|
|
if self.localTimer then
|
|
self.localTimer:Stop()
|
|
self.localTimer = nil
|
|
end
|
|
if self.noviceTimer then
|
|
self.noviceTimer:Stop()
|
|
self.noviceTimer = nil
|
|
end
|
|
end
|
|
|
|
function GiftPackPage:OnDestroy()
|
|
self.spLoader:Destroy()
|
|
ClearRedPointObject(RedPointType.DailyGift)
|
|
self.scrollView=nil
|
|
self.noviceScrollView=nil
|
|
if self.localTimer then
|
|
self.localTimer:Stop()
|
|
self.localTimer = nil
|
|
end
|
|
end
|
|
---------------------
|
|
|
|
-------新手礼包-------
|
|
--打开界面设置新手礼包数据
|
|
function GiftPackPage:SetNoviceGiftData()
|
|
--倒计时
|
|
local time=1
|
|
time=ShopManager.GetShopCloseTime(SHOP_TYPE.NOVICE_GIFT_SHOP)
|
|
self.countDown.text=TimeToDHMS(time)..Language[11116]
|
|
if not self.noviceTimer then
|
|
self.noviceTimer=Timer.New(function()
|
|
if time<1 then
|
|
time=0
|
|
self.noviceTimer:Stop()
|
|
self.noviceBg:SetActive(false)
|
|
self.bg:SetActive(true)
|
|
end
|
|
time=ShopManager.GetShopCloseTime(SHOP_TYPE.NOVICE_GIFT_SHOP)
|
|
self.countDown.text=TimeToDHMS(time)..Language[11116]
|
|
end,1,-1,true)
|
|
end
|
|
self.noviceTimer:Start()
|
|
|
|
--重组数据
|
|
local noviceData = {}
|
|
local data=self:ResetNoviceGiftData(ShopManager.GetShopDataByType(SHOP_TYPE.NOVICE_GIFT_SHOP).storeItem,SHOP_TYPE.NOVICE_GIFT_SHOP)
|
|
|
|
for i, v in ipairs(data) do
|
|
table.insert(noviceData,{shopItemConfig[v.id],v.buyNum})--组装数据
|
|
end
|
|
|
|
--设置滚动条数据
|
|
self.noviceScrollView:SetData(noviceData,function(index,root)
|
|
noviceScrollViewIndex = index
|
|
self:ShowNoviceGiftData(root,noviceData[index],index)
|
|
end)
|
|
end
|
|
|
|
--显示每一条数据
|
|
function GiftPackPage:ShowNoviceGiftData(root,data,index)
|
|
local bg=Util.GetGameObject(root,"bg"):GetComponent("Image")
|
|
local title=Util.GetGameObject(root,"title"):GetComponent("Image")
|
|
local itemGroup=Util.GetGameObject(root,"itemGroup")
|
|
local returnProportion=Util.GetGameObject(root,"returnProportion/Text"):GetComponent("Text")
|
|
local buyBtn=Util.GetGameObject(root,"buyBtn")
|
|
local icon=Util.GetGameObject(buyBtn,"icon"):GetComponent("Image")
|
|
local price=Util.GetGameObject(buyBtn,"price"):GetComponent("Text")
|
|
local shows = ShopManager.GetShopItemGoodsInfo(data[1].Id)
|
|
local shadow=Util.GetGameObject(root,"shadow")
|
|
|
|
for i = 1, #NoviceGiftTitle do
|
|
if data[1].Sort==i then
|
|
bg.sprite=self.spLoader:LoadSprite("l_lb_"..i)
|
|
title.sprite=self.spLoader:LoadSprite(NoviceGiftTitle[i])
|
|
title:SetNativeSize()
|
|
end
|
|
end
|
|
returnProportion.text=data[1].Rebate
|
|
|
|
--滚动条复用重设itemview
|
|
if self.NoviceItemList[root] then
|
|
for i = 1, 4 do
|
|
self.NoviceItemList[root][i].gameObject:SetActive(false)
|
|
end
|
|
for i = 1, #shows do
|
|
if self.NoviceItemList[root][i] then
|
|
self.NoviceItemList[root][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
|
|
self.NoviceItemList[root][i].gameObject:SetActive(true)
|
|
end
|
|
end
|
|
else
|
|
self.NoviceItemList[root]={}
|
|
for i = 1, 4 do
|
|
self.NoviceItemList[root][i] = SubUIManager.Open(SubUIConfig.ItemView, itemGroup.transform)
|
|
self.NoviceItemList[root][i].gameObject:SetActive(false)
|
|
local obj= newObjToParent(shadow,self.NoviceItemList[root][i].transform)
|
|
obj.transform:SetAsFirstSibling()
|
|
obj.transform:DOAnchorPos(Vector3(0,-3,0),0)
|
|
obj:GetComponent("RectTransform").transform.localScale=Vector3.one*1.15
|
|
obj.gameObject:SetActive(true)
|
|
end
|
|
for i = 1, #shows do
|
|
self.NoviceItemList[root][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
|
|
self.NoviceItemList[root][i].gameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
if data[2]==0 then
|
|
buyBtn:GetComponent("Button").interactable=true
|
|
icon.sprite=SetIcon(self.spLoader, data[1].Cost[1][1])
|
|
price.text=" "..CalculateCostCount(1,data[1].Cost[2])
|
|
else
|
|
buyBtn:GetComponent("Button").interactable=false
|
|
icon.gameObject:SetActive(false)
|
|
price.text=Language[10514]
|
|
end
|
|
|
|
Util.AddOnceClick(buyBtn,function()
|
|
--PopupTipPanel.ShowTip("购买"..data.GoodsName)
|
|
self:NoviceBuyAction(data[1].Cost[1][1],CalculateCostCount(1,data[1].Cost[2]),SHOP_TYPE.NOVICE_GIFT_SHOP,data[1].Id)
|
|
end)
|
|
end
|
|
--新手礼包购买事件
|
|
function GiftPackPage:NoviceBuyAction(costId, costNum, shopType, itemId)
|
|
local haveNum = BagManager.GetItemCountById(costId)
|
|
local costName = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig, costId).Name)
|
|
--Log("需要消耗的道具ID" .. costId)
|
|
if haveNum < costNum then
|
|
NotEnoughPopup:Show(costId)
|
|
else
|
|
local isPopUp = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .. shopType)
|
|
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
|
|
if (isPopUp ~= currentTime and costNum ~= 0) then
|
|
local str = string.format(Language[11360], costNum, costName)
|
|
MsgPanel.ShowTwo(str, function()
|
|
end, function(isShow)
|
|
if (isShow) then
|
|
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
|
|
RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. shopType, currentTime)
|
|
end
|
|
ShopManager.RequestBuyShopItem(shopType, itemId, 1, function()
|
|
self:SetNoviceGiftData()
|
|
self:RefreshPanel()
|
|
--CheckRedPointStatus(RedPointType.DailyGift)
|
|
end) end, Language[10731], Language[10732],nil,true)
|
|
else
|
|
ShopManager.RequestBuyShopItem(shopType, itemId, 1, function()
|
|
self:SetNoviceGiftData()
|
|
self:RefreshPanel()
|
|
--CheckRedPointStatus(RedPointType.DailyGift)
|
|
end)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- 商店数据重组
|
|
function GiftPackPage:ResetNoviceGiftData(shopData, shopType)
|
|
local canBuyData = {}
|
|
local noBuyData = {}
|
|
local newData = {}
|
|
for i = 1, #shopData do
|
|
local boughtNum = ShopManager.GetShopItemHadBuyTimes(shopType, shopData[i].id)
|
|
local limitNum = ShopManager.GetShopItemLimitBuyCount(shopData[i].id)
|
|
if limitNum == -1 or limitNum - boughtNum > 0 then
|
|
canBuyData[#canBuyData + 1] = shopData[i]
|
|
else
|
|
noBuyData[#noBuyData + 1] = shopData[i]
|
|
end
|
|
end
|
|
|
|
for i = 1, #canBuyData do
|
|
newData[#newData + 1] = canBuyData[i]
|
|
end
|
|
|
|
for i = 1, #noBuyData do
|
|
newData[#newData + 1] = noBuyData[i]
|
|
end
|
|
return newData
|
|
end
|
|
|
|
-- 刷新面板 当新手礼包购买完毕时 刷新到日周月礼包
|
|
function GiftPackPage:RefreshPanel()
|
|
if not ShopManager.IsActive(SHOP_TYPE.NOVICE_GIFT_SHOP) or not ShopManager.CheckNoviceGiftData() then
|
|
self:OnShowPanelData()
|
|
end
|
|
end
|
|
|
|
-----------本模块特殊使用-----------
|
|
function GiftPackPage:TimeToHMS(t)
|
|
if not t or t < 0 then
|
|
return Language[11365]
|
|
end
|
|
local _sec = t % 60
|
|
local allMin = math.floor(t / 60)
|
|
local _min = allMin % 60
|
|
local _hour = math.floor(allMin / 60)
|
|
return string.format(Language[10551], _hour, _min, _sec), _hour, _min, _sec
|
|
end
|
|
------------------------------
|
|
return GiftPackPage
|
|
|