PGRData/Script/matrix/xui/xuiachievement/achievement/paneltabs/XUiAchvPanelTabs.lua

68 lines
No EOL
1.8 KiB
Lua

--================
--成就动态列表
--================
local XUiAchvPanelTabs = {}
local TempPanel
local TempTabs
local XGridTab = require("XUi/XUiAchievement/Achievement/PanelTabs/XUiAchvGridTab")
local function Refresh(uiAchv)
if uiAchv.TabsInitFlag then
TempTabs = uiAchv.Tabs
return
end
uiAchv.Tabs = {}
TempPanel.BtnTab.gameObject:SetActiveEx(false)
uiAchv.TabsInitFlag = true
TempTabs = uiAchv.Tabs
local achievementTypes = XAchievementConfigs.GetCfgByIdKey(
XAchievementConfigs.TableKey.BaseId2AchievementTypeDic,
uiAchv.BaseTypeId
)
local index = 0
local buttons = {}
for _, typeCfg in pairs(achievementTypes) do
index = index + 1
if not TempTabs[index] then
local tabGo = CS.UnityEngine.GameObject.Instantiate(TempPanel.BtnTab.gameObject, TempPanel.TabBtnGroup.transform)
TempTabs[index] = XGridTab.New(tabGo, function(typeId) uiAchv:OnSelectType(typeId) end)
end
TempTabs[index]:Show()
TempTabs[index]:RefreshData(typeCfg)
table.insert(buttons, TempTabs[index]:GetButton())
end
TempPanel.TabBtnGroup:Init(buttons, function(index)
TempTabs[index]:OnSelect()
end)
TempPanel.TabBtnGroup:SelectIndex(XDataCenter.AchievementManager.GetCanGetRewardTypeIndexByBaseType(uiAchv.BaseTypeId))
end
local function Clear()
TempPanel = nil
TempTabs = nil
end
XUiAchvPanelTabs.OnEnable = function(uiAchv)
TempPanel = {}
XTool.InitUiObjectByUi(TempPanel, uiAchv.PanelTabs)
Refresh(uiAchv)
end
XUiAchvPanelTabs.Refresh = function()
for _, tab in pairs(TempTabs or {}) do
tab:ShowReddot()
end
end
XUiAchvPanelTabs.OnDisable = function()
Clear()
end
XUiAchvPanelTabs.OnDestroy = function()
Clear()
end
return XUiAchvPanelTabs