using Cysharp.Threading.Tasks; using Framework; using PhxhSDK; using System.Collections.Generic; public class ScrollNoticeManager : Singlenton { private bool allowNotice = true; private bool isShow = false; private Queue receives = new Queue(); void ShowNotice() { if (receives.Count > 0 && allowNotice && !isShow) { string notice = receives.Dequeue(); isShow = true; DebugUtil.Log("展示滚动公告:" + notice); UIManager.Instance.CreateAndOpenWindow(UINameConst.UIScrollNotice, notice).Forget(); } } /// /// 一条通告显示完毕后的冷却时间 /// async void Cooldown() { await UniTask.Delay(1000); ShowNotice(); } #region public /// /// 设置当前是否允许显示滚动公告 /// /// public void SetAllowNotice(bool allow) { allowNotice = allow; if (allowNotice) { ShowNotice(); } } /// /// 添加滚动公告 /// /// public void AddNotice(string notice) { for (int i = 0; i < TableManager.Instance.Tables.GlobalConfig.NotificationLoopCount; i++) receives.Enqueue(notice); DebugUtil.Log("添加滚动公告:" + notice); if(!isShow && allowNotice) { ShowNotice(); } } /// /// 当前滚动公告显示完成 /// public void ShowFinished() { isShow = false; Cooldown(); } /// /// 清空滚动公告 /// public void ClearNotice() { receives.Clear(); } #endregion }