PGRData/Script/matrix/xui/xuishop/XUiPanelShopPeriod.lua
2024-09-01 22:49:41 +02:00

186 lines
No EOL
5.7 KiB
Lua

XUiPanelShopPeriod = XClass(nil, "XUiPanelShopPeriod")
function XUiPanelShopPeriod:Ctor(ui, parent)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.Parent = parent
self:InitAutoScript()
self.RefShopTime = nil
self.CloseTimer = nil
end
function XUiPanelShopPeriod:InitAutoScript()
XTool.InitUiObject(self)
self:AutoAddListener()
end
function XUiPanelShopPeriod:AutoAddListener()
self.BtnRefresh.CallBack = function()
self:OnBtnRefreshClick()
end
end
-- auto
function XUiPanelShopPeriod:OnBtnRefreshClick()
XShopManager.RefreshShopGoods(self.ShopId, function()
self:UpdateManualRefreshInfo()
self.Parent:RefreshBuy(false)
end)
self.Parent:PlayAnimation("AnimQieHuan")
end
function XUiPanelShopPeriod:HidePanel()
self.ShopId = nil
self:RemoveTimer()
if not XTool.UObjIsNil(self.GameObject) then
self.GameObject:SetActiveEx(false)
end
end
function XUiPanelShopPeriod:RemoveTimer()
if self.Timer then
XScheduleManager.UnSchedule(self.Timer)
self.Timer = nil
end
end
function XUiPanelShopPeriod:ShowPanel(shopId)
if shopId then
self.ShopId = shopId
end
self:UpdateShopBuyInfo()
self:UpdateManualRefreshInfo()
self:RemoveTimer()
self:ShowTimer()
self:SetPanelActive()
self.GameObject:SetActive(true)
end
function XUiPanelShopPeriod:UpdateManualRefreshInfo()
local costInfo = XShopManager.GetManualRefreshCost(self.ShopId)
if not costInfo or not costInfo.ManualResetTimesLimit then
self.BtnRefresh.gameObject:SetActive(false)
return
end
if costInfo.RefreshCostId and costInfo.RefreshCostId > 0 and
costInfo.RefreshCostCount and costInfo.RefreshCostCount > 0 then
self.TxtRefAsset.text = costInfo.RefreshCostCount
self.RImgRef:SetRawImage(XDataCenter.ItemManager.GetItemIcon(costInfo.RefreshCostId))
self.TxtRefAsset.gameObject:SetActive(true)
self.RImgRef.gameObject:SetActive(true)
else
self.TxtRefAsset.gameObject:SetActive(false)
self.RImgRef.gameObject:SetActive(false)
end
if costInfo.ManualResetTimesLimit == - 1 then
self.TxtContent.gameObject:SetActive(false)
else
local leftTimes = costInfo.ManualResetTimesLimit - costInfo.ManualRefreshTimes
self.TxtContent.text = CS.XTextManager.GetText("ShopResetTimes", leftTimes, costInfo.ManualResetTimesLimit)
self.TxtContent.gameObject:SetActive(true)
end
self.BtnRefresh.gameObject:SetActive(true)
end
function XUiPanelShopPeriod:UpdateShopBuyInfo()
if not self.ShopId then
return
end
local buyInfo = XShopManager.GetShopBuyInfo(self.ShopId)
if not buyInfo then
self.TxtAllLeftCout.gameObject:SetActive(false)
return
end
if not buyInfo.BuyTimesLimit or buyInfo.BuyTimesLimit == 0 then
self.TxtAllLeftCout.gameObject:SetActive(false)
else
local buyCount = buyInfo.TotalBuyTimes and buyInfo.BuyTimesLimit - buyInfo.TotalBuyTimes or buyInfo.BuyTimesLimit
self.TxtAllLeftCout.text = CS.XTextManager.GetText("BuyCount", buyCount, buyInfo.BuyTimesLimit)
self.TxtAllLeftCout.gameObject:SetActive(true)
end
end
--开始倒计时时间
function XUiPanelShopPeriod:ShowTimer()
self.TxtLeftTime.gameObject:SetActive(false)
self.TxtRefreshTime.gameObject:SetActive(false)
local timeInfo = XShopManager.GetShopTimeInfo(self.ShopId)
if not timeInfo or not next(timeInfo) then
return
end
local refreshFunc, closedFunc
if timeInfo.RefreshLeftTime and timeInfo.RefreshLeftTime > 0 then
refreshFunc = function()
local dataTime = XUiHelper.GetTime(timeInfo.RefreshLeftTime, XUiHelper.TimeFormatType.SHOP_REFRESH)
self.TxtRefreshTime.text = CS.XTextManager.GetText("ShopAutoRefresh") .. dataTime
timeInfo.RefreshLeftTime = timeInfo.RefreshLeftTime - 1
if timeInfo.RefreshLeftTime < 0 then
refreshFunc = nil
end
end
end
if timeInfo.ClosedLeftTime and timeInfo.ClosedLeftTime > 0 then
closedFunc = function()
local dataTime = XUiHelper.GetTime(timeInfo.ClosedLeftTime, XUiHelper.TimeFormatType.SHOP_REFRESH)
self.TxtLeftTime.text = CS.XTextManager.GetText("ActiveTime", dataTime)
timeInfo.ClosedLeftTime = timeInfo.ClosedLeftTime - 1
if timeInfo.ClosedLeftTime < 0 then
closedFunc = nil
end
end
end
if not refreshFunc and not closedFunc then
return
end
if refreshFunc then
refreshFunc()
self.TxtRefreshTime.gameObject:SetActive(true)
end
if closedFunc then
closedFunc()
self.TxtLeftTime.gameObject:SetActive(true)
end
self.Timer = XScheduleManager.ScheduleForever(function()
if timeInfo.ClosedLeftTime and not closedFunc then
self:RemoveTimer()
XShopManager.GetShopInfo(self.ShopId, function()
self.Parent:RefreshBuy(false)
end)
return
end
if timeInfo.RefreshLeftTime and not refreshFunc then
self:RemoveTimer()
XShopManager.GetShopInfo(self.ShopId, function()
self.Parent:RefreshBuy(false)
self:ShowTimer()
end)
return
end
if refreshFunc then
refreshFunc()
end
if closedFunc then
closedFunc()
end
end, 1000)
end
function XUiPanelShopPeriod:SetPanelActive()
self.PanelTxt.gameObject:SetActive(self.TxtLeftTime.gameObject.activeSelf or self.TxtAllLeftCout.gameObject.activeSelf or self.TxtRefreshTime.gameObject.activeSelf or self.BtnRefresh.gameObject.activeSelf)
end