PGRData/Script/matrix/xui/xuipokemon/XUiPokemonMainLineBanner.lua

160 lines
No EOL
5.3 KiB
Lua

local XUiPokemonMainLineBanner = XLuaUiManager.Register(XLuaUi, "UiPokemonMainLineBanner")
local XUiGridPokemonChapter = require("XUi/XUiPokemon/XUiGridPokemonChapter")
function XUiPokemonMainLineBanner:OnStart()
self:RegisterButtonEvent()
self:InitDynamicTable()
self:SetupDynamicTable()
local helpId = XPokemonConfigs.GetHelpId()
self.BtnHelp.gameObject:SetActiveEx(helpId > 0)
XRedPointManager.AddRedPointEvent(self.ImgRedPoint, self.CheckTimeSupplyRedPoint, self, { XRedPointConditions.Types.CONDITION_POKEMON_TIME_SUPPLY_RED })
end
function XUiPokemonMainLineBanner:OnEnable()
self:RefreshTimeSupplyText()
self:RefreshTimeSupplyProgress()
self:RefreshActivityTime()
self:StartTimer()
XRedPointManager.CheckOnce(self.CheckTaskRedPoint, self, { XRedPointConditions.Types.CONDITION_POKEMON_TASK_RED })
end
function XUiPokemonMainLineBanner:OnDisable()
self:StopTimer()
end
function XUiPokemonMainLineBanner:InitDynamicTable()
---@type XDynamicTableNormal
self.DynamicTable = XDynamicTableNormal.New(self.SViewChapterDz)
self.DynamicTable:SetDelegate(self)
self.DynamicTable:SetProxy(XUiGridPokemonChapter,self)
end
function XUiPokemonMainLineBanner:SetupDynamicTable()
local chapters = XDataCenter.PokemonManager.GetChapters()
self.DynamicTable:SetTotalCount(#chapters)
self.DynamicTable:ReloadDataASync()
end
function XUiPokemonMainLineBanner:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:Refresh(index)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
grid:OnClickGrid(index)
end
end
function XUiPokemonMainLineBanner:StartTimer()
if self.TimeHandler then self:StopTimer() end
self.StartTime, self.EndTime = XDataCenter.PokemonManager.GetCurrActivityTime()
self.TimeHandler = XScheduleManager.ScheduleForever(function()
if XTool.UObjIsNil(self.TxtProgress) then
self:StopTimer()
return
end
local currentTime = XTime.GetServerNowTimestamp()
if currentTime > self.EndTime then
XDataCenter.PokemonManager.OnActivityEnd()
return
end
self:RefreshTimeSupplyText()
self:RefreshTimeSupplyProgress()
self:RefreshActivityTime()
end, 1000, 0)
end
function XUiPokemonMainLineBanner:StopTimer()
if self.TimeHandler then
XScheduleManager.UnSchedule(self.TimeHandler)
self.TimeHandler = nil
end
end
function XUiPokemonMainLineBanner:RegisterButtonEvent()
self.BtnBack.CallBack = function()
self:Close()
end
self.BtnMainUi.CallBack = function()
XLuaUiManager.RunMain()
end
self.BtnTask.CallBack = function()
XLuaUiManager.Open("UiPokemonActiveTask")
end
self.BtnCulture.CallBack = function()
XDataCenter.PokemonManager.OpenMonsterUi()
end
self.BtnHelp.CallBack = function()
self:OnClickHelpBtn()
end
self:RegisterClickEvent(self.BtnTreasure,function() self:OnClickTimeSupplyBtn() end)
end
function XUiPokemonMainLineBanner:OnClickHelpBtn()
local helpId = XPokemonConfigs.GetHelpId()
if helpId > 0 then
local template = XHelpCourseConfig.GetHelpCourseTemplateById(helpId)
XUiManager.ShowHelpTip(template.Function)
end
end
function XUiPokemonMainLineBanner:OnClickTimeSupplyBtn()
if XDataCenter.PokemonManager.CheckCanGetTimeSupply() then
XDataCenter.PokemonManager.PokemonGetTimeSupplyRewardRequest(function(rewardsList)
XUiManager.OpenUiTipReward(rewardsList)
end)
else
XUiManager.TipText("PokemonCannotGetTimeSupply")
end
end
function XUiPokemonMainLineBanner:RefreshTimeSupplyText()
local offsetTime = XDataCenter.PokemonManager.GetTimeSupplyOffsetTime()
self.TxtProgress.text = self:ParseTime(offsetTime)
XEventManager.DispatchEvent(XEventId.EVENT_POKEMON_RED_POINT_TIME_SUPPLY)
end
function XUiPokemonMainLineBanner:RefreshActivityTime()
local _, endTime = XDataCenter.PokemonManager.GetCurrActivityTime()
local now = XTime.GetServerNowTimestamp()
local offset = endTime - now
if offset < 0 then
offset = 0
end
local timeStr = XUiHelper.GetTime(offset, XUiHelper.TimeFormatType.ACTIVITY)
self.TxtEndurance.text = timeStr
end
function XUiPokemonMainLineBanner:CheckTimeSupplyRedPoint(isShow)
self.ImgRedPoint.gameObject:SetActiveEx(isShow >= 0)
if self.TxtReward then
self.TxtReward.gameObject:SetActiveEx(isShow >= 0)
end
if self.RImgBgIcon then
self.RImgBgIcon.gameObject:SetActiveEx(isShow < 0)
end
if self.RImgBgIcon2 then
self.RImgBgIcon2.gameObject:SetActiveEx(isShow >= 0)
end
end
function XUiPokemonMainLineBanner:CheckTaskRedPoint(isShow)
self.BtnTask:ShowReddot(isShow >= 0)
end
function XUiPokemonMainLineBanner:RefreshTimeSupplyProgress()
local offsetTime = XDataCenter.PokemonManager.GetTimeSupplyOffsetTime()
self.ImgProgress.fillAmount = offsetTime / (XPokemonConfigs.GetTimeSupplyMaxCount() * XPokemonConfigs.GetTimeSupplyInterval())
end
function XUiPokemonMainLineBanner:ParseTime(time)
local seconds = math.floor(time % 60)
local mins = math.floor((time / 60) % 60)
local hours = math.floor(time / 3600)
return string.format("%02d:%02d:%02d", hours, mins, seconds)
end
return XUiPokemonMainLineBanner