PGRData/Resources/Scripts/XUi/XUiPurchase/XUiGridPurchaseYK.lua
2022-12-26 14:06:01 +05:30

247 lines
No EOL
9.6 KiB
Lua

local XUiGridPurchaseYK = XClass(nil, "XUiGridPurchaseYK")
local TextManager = CS.XTextManager
local Next = _G.next
local UiType =
{
BgMonth = 2,
BgWeek = 13,
BgDay = 14,
}
local BuyState = {
CanBuy = 1,
NotCanBuy = 2
}
local TotalCountLimit
local CountLimit
local TotalCountLimitWeek
local TotalCountLimitDay
local CountLimitWeek
local Application = CS.UnityEngine.Application
local Platform = Application.platform
local RuntimePlatform = CS.UnityEngine.RuntimePlatform
function XUiGridPurchaseYK:Ctor(ui, uiroot)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.UiRoot = uiroot
TotalCountLimit = CS.XGame.ClientConfig:GetInt("PurchaseYKTotalCount") or 1
CountLimit = CS.XGame.ClientConfig:GetInt("PurchaseYKLimtCount") or 30
TotalCountLimitWeek = CS.XGame.ClientConfig:GetInt("PurchaseYKTotalCountWeek") or 1
TotalCountLimitDay = CS.XGame.ClientConfig:GetInt("PurchaseYKTotalCountDay") or 1
CountLimitWeek = CS.XGame.ClientConfig:GetInt("PurchaseYKLimtCountWeek") or 7
XTool.InitUiObject(self)
self:InitUi()
self.RewardItems = {}
self.DailyRewardItems = {}
end
function XUiGridPurchaseYK:SetBuyClickCallBack(uiroot, callback)
self.UiRoot = uiroot
self.CallBack = callback
end
function XUiGridPurchaseYK:InitUi()
self.BtnYkBuy.CallBack = function()
self:OnBtnYKBuyClick()
end
end
function XUiGridPurchaseYK:Refresh(data, needUpdateId)
if data == nil then
return
end
self.Data = data
--根据类型判断显示的内容
self.TextPromptlyGet.gameObject:SetActiveEx(self.Data.UiType == UiType.BgMonth)
self.TextDayGet.gameObject:SetActiveEx(self.Data.UiType == UiType.BgMonth)
self.TextDayGetNotMonth.gameObject:SetActiveEx(self.Data.UiType ~= UiType.BgMonth)
self.PanelNowGet.gameObject:SetActiveEx(self.Data.UiType == UiType.BgMonth)
self.PanelDayGet.gameObject:SetActiveEx(self.Data.UiType == UiType.BgMonth)
self.PanelDayGetNotMonth.gameObject:SetActiveEx(self.Data.UiType ~= UiType.BgMonth)
--self.GetNotMonthPanel.gameObject:SetActiveEx(self.Data.UiType ~= UiType.BgMonth)
--根据类型显示对应的背景图
local icon = XPurchaseConfigs.GetPurchaseYKIconById(self.Data.Id)
local bgPathConfig = XPurchaseConfigs.GetIconPathByIconName(icon.Path)
self.ImgMonth:SetRawImage(bgPathConfig.AssetPath)
if self.Data.UiType == UiType.BgDay then
self.TxtDay.gameObject:SetActiveEx(false)
--self.TxtDay.text = self.Data.MailCount and self.Data.MailCount or 0
else
self.TxtDay.gameObject:SetActiveEx(false)
end
local totalCount
local countLimit
if self.Data.UiType == UiType.BgDay then
totalCount = TotalCountLimitDay
countLimit = self.Data.MailCount and self.Data.MailCount or 1
elseif self.Data.UiType == UiType.BgWeek then
totalCount = TotalCountLimitWeek
countLimit = CountLimitWeek
elseif self.Data.UiType == UiType.BgMonth then
totalCount = self.Data.MailCount > 0 and 1 or TotalCountLimit
countLimit = CountLimit
end
local isMutexPur = XDataCenter.PurchaseManager.CheckMutexPurchaseYKBuy(self.Data.UiType, self.Data.Id)
self.IsMutexPur = isMutexPur
if self.Data.BuyTimes > 0 or isMutexPur then
local curlimitcount = math.ceil(self.Data.DailyRewardRemainDay / countLimit)
self.Txtlimit.text = TextManager.GetText("PurchaseYKBuyLimt", curlimitcount, totalCount)
local clientResetInfo = self.Data.ClientResetInfo
if not isMutexPur and clientResetInfo and clientResetInfo.DayCount >= self.Data.DailyRewardRemainDay and curlimitcount < totalCount then
if self.Data.DailyRewardRemainDay > 0 then
self.BtnYkBuy:SetName(TextManager.GetText("PurchaseYKBuyText2"))
else
local name
local count
if self.Data.PayKeySuffix then
name = TextManager.GetText("PurchaseRiYuanName")
local key
if Platform == RuntimePlatform.Android then
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(1), self.Data.PayKeySuffix)
else
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(2), self.Data.PayKeySuffix)
end
local payConfig = XPayConfigs.GetPayTemplate(key)
count = payConfig.Amount
else
name = XDataCenter.ItemManager.GetItemName(self.Data.ConsumeId)
count = self.Data.ConsumeCount
end
self.BtnYkBuy:SetName(TextManager.GetText("PurchaseYKBuyText1", count, name))
end
self.CurBuyState = BuyState.CanBuy
else
self.CurBuyState = BuyState.NotCanBuy
self.BtnYkBuy:SetName(TextManager.GetText("PurchaseYKBuyText3"))
end
if self.Data.UiType == UiType.BgMonth then
self.TxtSurplus.text = TextManager.GetText("PurchaseYKSurplusDay", self.Data.DailyRewardRemainDay > 0 and self.Data.DailyRewardRemainDay - 1 or 0)
else
self.TxtSurplus.text = TextManager.GetText("PurchaseYKSurplusMail", self.Data.DailyRewardRemainDay > 0 and self.Data.DailyRewardRemainDay - 1 or 0)
end
else
self.Txtlimit.text = TextManager.GetText("PurchaseYKBuyLimt", 0, totalCount)
self.CurBuyState = BuyState.CanBuy
local name
local count
if self.Data.PayKeySuffix then
name = TextManager.GetText("PurchaseRiYuanName")
local key
if Platform == RuntimePlatform.Android then
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(1), self.Data.PayKeySuffix)
else
key = string.format("%s%s", XPayConfigs.GetPlatformConfig(2), self.Data.PayKeySuffix)
end
local payConfig = XPayConfigs.GetPayTemplate(key)
count = payConfig.Amount
else
name = XDataCenter.ItemManager.GetItemName(self.Data.ConsumeId)
count = self.Data.ConsumeCount
end
self.BtnYkBuy:SetName(TextManager.GetText("PurchaseYKBuyText1", count, name))
if self.Data.UiType == UiType.BgMonth then
self.TxtSurplus.text = TextManager.GetText("PurchaseYKSurplusDay", 0)
else
self.TxtSurplus.text = TextManager.GetText("PurchaseYKSurplusMail", 0)
end
end
if needUpdateId and needUpdateId == self.Data.Id then
self.BtnYkBuy:SetName(TextManager.GetText("BuyLimitYKButtonTips"))
end
self.Txtlimit.gameObject:SetActiveEx(true)
self.TxtSurplus.gameObject:SetActiveEx(true)
self.TxtTotalLimit.gameObject:SetActiveEx(false)
--多日卡并且限购次数为1
if self.Data.UiType == XPurchaseConfigs.YKType.Day and self.Data.BuyLimitTimes == 1 then
self.TxtSurplus.gameObject:SetActiveEx(false)
self.Txtlimit.gameObject:SetActiveEx(false)
self.TxtTotalLimit.gameObject:SetActiveEx(true)
self.TxtTotalLimit.text = TextManager.GetText("PurchaseYKBuyLimitDayCardTips", self.Data.BuyLimitTimes)
end
self.TxtYuan.text = self.Data.ConsumeCount
for i = 1, #self.RewardItems do
self.RewardItems[i].GameObject:SetActiveEx(false)
end
for i = 1, #self.DailyRewardItems do
self.DailyRewardItems[i].GameObject:SetActiveEx(false)
end
--显示奖励物品
if self.Data.RewardGoodsList and next(self.Data.RewardGoodsList) then
local parent = self.Data.UiType == UiType.BgMonth and self.PanelNowGet or self.PanelNowGetNotMonth
for i = 1, #self.Data.RewardGoodsList do
local grid
if not self.RewardItems[i] then
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon)
grid = XUiGridCommon.New(self.UiRoot, ui)
grid.Transform:SetParent(parent, false)
self.RewardItems[i] = grid
else
grid = self.RewardItems[i]
grid.Transform:SetParent(parent, false)
end
grid:Refresh(self.Data.RewardGoodsList[i])
grid.GameObject:SetActiveEx(true)
end
if self.Data.UiType ~= UiType.BgMonth then
self.NowGetNotMonthRoot.gameObject:SetActiveEx(true)
end
else
if self.Data.UiType ~= UiType.BgMonth then
self.NowGetNotMonthRoot.gameObject:SetActiveEx(false)
end
end
if self.Data.DailyRewardGoodsList and next(self.Data.DailyRewardGoodsList) then
local parent = self.Data.UiType == UiType.BgMonth and self.PanelDayGet or self.PanelDayGetNotMonth
for i = 1, #self.Data.DailyRewardGoodsList do
local grid
if not self.DailyRewardItems[i] then
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon)
grid = XUiGridCommon.New(self.UiRoot, ui)
grid.Transform:SetParent(parent, false)
self.DailyRewardItems[i] = grid
else
grid = self.DailyRewardItems[i]
grid.Transform:SetParent(parent, false)
end
grid:Refresh(self.Data.DailyRewardGoodsList[i])
grid.GameObject:SetActiveEx(true)
end
if self.Data.UiType ~= UiType.BgMonth then
self.DayGetNotMonthRoot.gameObject:SetActiveEx(true)
end
else
if self.Data.UiType ~= UiType.BgMonth then
self.DayGetNotMonthRoot.gameObject:SetActiveEx(false)
end
end
end
function XUiGridPurchaseYK:OnBtnYKBuyClick()
if self.CallBack then
self.CallBack(self.Data)
end
end
return XUiGridPurchaseYK