local LampNoticeManager = {} local TimerManager = require("GameCore.Timer.TimerManager") local Event = require("GameCore.Event.Event") local objNoticePanel, totalTimer, intervalTimer local CreateLampNoticePanel = function() local noticePanel = require("Game.UI.LampNotice.LampNoticePanel") objNoticePanel = noticePanel.new(AllEnum.UI_SORTING_ORDER.LampNotice, PanelId.LampNoticePanel, {}) objNoticePanel:_PreEnter() objNoticePanel:_Enter() end local HideLampNotice = function(_, isDelay) if intervalTimer ~= nil then intervalTimer:_Stop() intervalTimer = nil end if totalTimer ~= nil then totalTimer:_Stop() totalTimer = nil end EventManager.Hit("CloseLampNotice", isDelay) end local ShowLampNotice = function(_, noticeData) HideLampNotice(nil, false) local stopLampNotice = function() HideLampNotice(nil, false) end totalTimer = TimerManager.Add(1, noticeData.nTotalTime, nil, stopLampNotice, true, true, false, nil) local showNoticeUI = function() EventManager.Hit("ShowNoticeContent", noticeData.sContent, noticeData.nShowTime) end local nCount = noticeData.nTotalTime // noticeData.nIntervalTime intervalTimer = TimerManager.Add(nCount, noticeData.nIntervalTime, nil, showNoticeUI, true, true, false, nil) EventManager.Hit("ShowNoticeContent", noticeData.sContent, noticeData.nShowTime) end local NoticeChangeNotify = function(_, msgData) if not UTILS.CheckChannelList_Notice(msgData.Channel) then return end if msgData.IsStop then HideLampNotice(nil, false) return end local noticeData = { sContent = msgData.Content, nShowTime = msgData.Duration, nIntervalTime = msgData.Interval, nTotalTime = msgData.EndTime - CS.ClientManager.Instance.serverTimeStamp } ShowLampNotice(_, noticeData) end local function Uninit() EventManager.Remove("NoticeChangeNotify", LampNoticeManager, NoticeChangeNotify) EventManager.Remove(EventId.OpenLampNotice, LampNoticeManager, ShowLampNotice) EventManager.Remove(EventId.CloseLampNotice, LampNoticeManager, HideLampNotice) EventManager.Remove(EventId.CSLuaManagerShutdown, LampNoticeManager, Uninit) end function LampNoticeManager.Init() CreateLampNoticePanel() EventManager.Add("NoticeChangeNotify", LampNoticeManager, NoticeChangeNotify) EventManager.Add(EventId.OpenLampNotice, LampNoticeManager, ShowLampNotice) EventManager.Add(EventId.CloseLampNotice, LampNoticeManager, HideLampNotice) EventManager.Add(EventId.CSLuaManagerShutdown, LampNoticeManager, Uninit) end return LampNoticeManager