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

138 lines
No EOL
5 KiB
Lua

local next = next
local XUiActivityBase = XLuaUiManager.Register(XLuaUi, "UiActivityBase")
XUiActivityBase.BtnTabIndex = {
Activity = 1,
Notice = 2,
ActivityNotice = 3,
ActivityLink = 4,
}
XUiActivityBase.GameNoticeType = {
ActivityNotice = 0,
Notice = 1,
}
function XUiActivityBase:OnAwake()
self:InitAutoScript()
local tabGroup = {
self.BtnActivity,
self.BtnGameNotice,
self.BtnActivityNotice,
self.BtnLink,
}
self.PanelType:Init(tabGroup, function(tabIndex) self:OnClickTabCallBack(tabIndex) end)
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
XRedPointManager.AddRedPointEvent(self.BtnActivity, self.OnCheckNewActivities, self, { XRedPointConditions.Types.CONDITION_ACTIVITY_NEW_ACTIVITIES })
XRedPointManager.AddRedPointEvent(self.BtnGameNotice, self.OnCheckNewGameNotices, self, { XRedPointConditions.Types.CONDITION_ACTIVITY_NEW_NOTICES })
XRedPointManager.AddRedPointEvent(self.BtnActivityNotice, self.OnCheckNewActivityNotices, self, { XRedPointConditions.Types.CONDITION_ACTIVITY_NEW_ACTIVITY_NOTICES })
end
function XUiActivityBase:OnGetEvents()
return { XEventId.EVENT_UIDIALOG_VIEW_ENABLE }
end
function XUiActivityBase:OnNotify(evt)
if evt == XEventId.EVENT_UIDIALOG_VIEW_ENABLE then
self:Close()
end
end
function XUiActivityBase:OnCheckNewGameNotices(count)
self.BtnGameNotice:ShowReddot(count >= 0)
end
function XUiActivityBase:OnCheckNewActivities(count)
self.BtnActivity:ShowReddot(count >= 0)
end
function XUiActivityBase:OnCheckNewActivityNotices(count)
self.BtnActivityNotice:ShowReddot(count >= 0)
end
function XUiActivityBase:OnStart(skipIndex, subSkipIndex, subSkipId)
local defaultSelectIndex = skipIndex
self.SubSkipIndex = subSkipIndex
self.SubSkipId = subSkipId
self.ActivityGroupInfos = XDataCenter.ActivityManager.GetActivityGroupInfos()
local HaveGameNotice = XDataCenter.NoticeManager.CheckHaveNotice(XUiActivityBase.GameNoticeType.Notice)
local HaveActivityNotice = XDataCenter.NoticeManager.CheckHaveNotice(XUiActivityBase.GameNoticeType.ActivityNotice)
local HaveActivity = next(self.ActivityGroupInfos)
if HaveActivity then
defaultSelectIndex = defaultSelectIndex or XUiActivityBase.BtnTabIndex.Activity
elseif HaveActivityNotice then
defaultSelectIndex = defaultSelectIndex or XUiActivityBase.BtnTabIndex.ActivityNotice
else
defaultSelectIndex = defaultSelectIndex or XUiActivityBase.BtnTabIndex.Activity
end
self.BtnGameNotice:SetDisable(not HaveGameNotice)
self.BtnActivityNotice:SetDisable(not HaveActivityNotice)
if defaultSelectIndex then
self.PanelType:SelectIndex(defaultSelectIndex)
end
end
function XUiActivityBase:InitAutoScript()
self:AutoAddListener()
end
function XUiActivityBase:AutoAddListener()
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
end
function XUiActivityBase:OnBtnBackClick()
self:Close()
end
function XUiActivityBase:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiActivityBase:CloseChildUi(childUiName)
end
function XUiActivityBase:OnClickTabCallBack(tabIndex)
if self.SelectedIndex and self.SelectedIndex == tabIndex then
return
end
if tabIndex == XUiActivityBase.BtnTabIndex.Activity then
self:OpenOneChildUi("UiActivityBaseChild", self.ActivityGroupInfos, self.SubSkipIndex, self.SubSkipId)
elseif tabIndex == XUiActivityBase.BtnTabIndex.Notice then
if not XDataCenter.NoticeManager.CheckHaveNotice(XUiActivityBase.GameNoticeType.Notice) then
XUiManager.TipText("NoInGameNotice")
return
end
if not XLuaUiManager.IsUiShow("UiGameNotice") then
self:OpenOneChildUi("UiGameNotice", self, self.SubSkipIndex, self.SubSkipId, XUiActivityBase.GameNoticeType.Notice)
else
CsXGameEventManager.Instance:Notify(XEventId.EVENT_NOTICE_TYPE_CHANGE, XUiActivityBase.GameNoticeType.Notice)
end
elseif tabIndex == XUiActivityBase.BtnTabIndex.ActivityNotice then
if not XDataCenter.NoticeManager.CheckHaveNotice(XUiActivityBase.GameNoticeType.ActivityNotice) then
XUiManager.TipText("NoActivities")
return
end
if not XLuaUiManager.IsUiShow("UiGameNotice") then
self:OpenOneChildUi("UiGameNotice", self, self.SubSkipIndex, self.SubSkipId, XUiActivityBase.GameNoticeType.ActivityNotice)
else
CsXGameEventManager.Instance:Notify(XEventId.EVENT_NOTICE_TYPE_CHANGE, XUiActivityBase.GameNoticeType.ActivityNotice)
end
elseif tabIndex == XUiActivityBase.BtnTabIndex.ActivityLink then
self:OpenOneChildUi("UiActivityBaseLink")
end
self.SubSkipIndex = nil
self.SubSkipId = nil
self.SelectedIndex = tabIndex
end