Browse Source

添加公告红点;修改公告跳转返回至公告界面

leiyasi 1 year ago
parent
commit
87b6580a96

+ 65 - 1
GameClient/Assets/Game/HotUpdate/Data/NoticeDataManager.cs

@@ -1,3 +1,4 @@
+using ET;
 using System.Collections.Generic;
 using System.Linq;
 
@@ -72,10 +73,73 @@ namespace GFGGame
             });
         }
 
-
         public NoticeInfo GetNoticeInfoById(int noticeId)
         {
             return _noticeInfoDic[noticeId];
         }
+
+        public List<AdCfg> UpdateShowActivity()
+        {
+            AdCfg[] activitydata = AdCfgArray.Instance.dataArray;
+            List<AdCfg> showActivity = new List<AdCfg>();
+            for (int i = 0; i < activitydata.Length; i++)
+            {
+                AdCfg adCfg = activitydata[i];
+                if (adCfg.activityId > 0)
+                {
+                    if (ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId) == null) continue;
+                    ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId);
+                    if (TimeHelper.ServerNow() < activityInfo.StartTime || TimeHelper.ServerNow() > activityInfo.EndTime) continue;
+                }
+                if (adCfg.NoticeTips != null && adCfg.NoticeTips != "")
+                {
+                    if (adCfg.activityId != 0)
+                    {
+                        ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId);
+                        if (TimeHelper.ServerNow() < activityInfo.StartTime || TimeHelper.ServerNow() > activityInfo.EndTime)
+                        {
+
+                        }
+                        else
+                        {
+                            showActivity.Add(adCfg);
+                            continue;
+                        }
+                    }
+                    if (adCfg.startTime != "" && adCfg.startTime != null)
+                    {
+                        long startTime = TimeUtil.DateTimeToTimestamp(adCfg.startTime);
+                        long endTime = TimeUtil.DateTimeToTimestamp(adCfg.endTime);
+                        if (TimeHelper.ServerNow() < startTime || TimeHelper.ServerNow() > endTime)
+                        {
+                            continue;
+                        }
+                        else
+                        {
+                            showActivity.Add(adCfg);
+                        }
+                    }
+                }
+            }
+
+            return showActivity;
+        }
+
+        public bool GetRedDotState(string jumpId, int activityID)
+        {
+            switch (jumpId)
+            {
+                case "DailySignView":
+                    return RedDotDataManager.Instance.GetActivityDay7Red();
+                case "LuckyBoxView":
+                    return RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitTsy) || RedDotDataManager.Instance.GetLuckyBoxFreeTimes();
+                case "NewLimitChargeView":
+                    return RedDotDataManager.Instance.GetLimiteChargeRewardRed(activityID);
+                case "OpenServerActivityView":
+                    return RedDotDataManager.Instance.GetOpenServerRed();
+            }
+
+            return false;
+        }
     }
 }

+ 9 - 0
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -20,6 +20,15 @@ namespace GFGGame
             {
                 if (noticeInfos[i].readStatus == false) return true;
             }
+
+            List<AdCfg> showActivity = NoticeDataManager.Instance.UpdateShowActivity();
+            for (int i = 0; i < showActivity.Count; i++)
+            {
+                if (NoticeDataManager.Instance.GetRedDotState(showActivity[i].jumpId, showActivity[i].activityId))
+                {
+                    return true;
+                }
+            }
             return false;
         }
 

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -895,6 +895,7 @@ namespace GFGGame
 
             if (redPointUpdateFrame == 12)
                 RedDotController.Instance.SetComRedDot(_ui.m_btnActivityDay7.target, RedDotDataManager.Instance.GetActivityDay7Red(), "", -10, 17);
+
             RedDotController.Instance.SetComRedDot(_ui.m_btnWanShiLi.target, RedDotDataManager.Instance.GetActivityWanShiLiRed(), "", -24, -9);
 
             if (redPointUpdateFrame == 13)

+ 55 - 56
GameClient/Assets/Game/HotUpdate/Views/Notice/NoticeView.cs

@@ -13,6 +13,7 @@ namespace GFGGame
         private EffectUI _effectUI2;
         private AdCfg[] activitydata;
         private List<AdCfg> showActivity = new List<AdCfg>();
+
         public override void Dispose()
         {
             EffectUIPool.Recycle(_effectUI1);
@@ -37,6 +38,7 @@ namespace GFGGame
             this.viewCom.Center();
             this.modal = true;
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
+            isReturnView = true;
         }
 
         protected override void OnInit()
@@ -60,11 +62,18 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            _ui.m_c1.selectedIndex = 1;
-            _ui.m_listActivity.visible = true;
-            _ui.m_listNotice.visible = true;
-            _ui.m_buttonCom.visible = true;
+
+            if (backRefresh)
+            {
+                _ui.m_c1.selectedIndex = 1;
+                _ui.m_listActivity.visible = true;
+                _ui.m_listNotice.visible = true;
+                _ui.m_buttonCom.visible = true;
+            }
+
             OnCtrlChange();
+            UpdateInfo();
+            UpdateTitleRedDot();
         }
 
         protected override void OnHide()
@@ -102,20 +111,16 @@ namespace GFGGame
             }
         }
 
+        /// <summary>
+        /// 活动公告 0
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="obj"></param>
         private void ListActivityItemRender(int index, GObject obj)
         {
             UI_ListActivityItem item = UI_ListActivityItem.Proxy(obj);
-            item.m_loaShow.url = ResPathUtil.GetActivityPath(showActivity[index].NoticeTips,"png");
+            item.m_loaShow.url = ResPathUtil.GetActivityPath(showActivity[index].NoticeTips, "png");
             item.m_txtName.text = "";
-            switch (showActivity[index].jumpId)
-            {
-                //后续添加其他活动
-                case "LuckyBoxView":
-                    item.m_imgTips.visible = RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitTsy) || RedDotDataManager.Instance.GetLuckyBoxFreeTimes();
-                    break;
-                default:
-                    break;
-            }
             long endTime = 0;
             long curTime = TimeHelper.ServerNow();
             if (showActivity.Count > 0)
@@ -133,9 +138,11 @@ namespace GFGGame
             item.m_txtTime.text = string.Format("剩余时间:{0}", TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime));
             item.target.onClick.Add(OnListActivityClick);
             item.target.data = showActivity[index];
+            item.m_imgTips.visible = NoticeDataManager.Instance.GetRedDotState(showActivity[index].jumpId, showActivity[index].activityId);
             UI_ListActivityItem.ProxyEnd();
         }
 
+
         private void OnListActivityClick(EventContext context)
         {
             AdCfg adCfg = (AdCfg)(context.sender as GObject).data;
@@ -156,16 +163,21 @@ namespace GFGGame
 
             if (jumpIndex != 0)
             {
-                this.Hide();
-                ViewManager.Show($"GFGGame.{adCfg.jumpId}", jumpIndex);
+                //Hide();
+                ViewManager.Show($"GFGGame.{adCfg.jumpId}", jumpIndex, false, false);
             }
             else
             {
-                this.Hide();
-                ViewManager.Show($"GFGGame.{adCfg.jumpId}", param);
+                //Hide();
+                ViewManager.Show($"GFGGame.{adCfg.jumpId}", param, false, false);
             }
         }
 
+        /// <summary>
+        /// 系统公告 1
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="obj"></param>
         private void ListNoticeItemRender(int index, GObject obj)
         {
             NoticeInfo noticeInfo = NoticeDataManager.Instance.NoticeInfos[index];
@@ -179,8 +191,10 @@ namespace GFGGame
                 item.m_btnGo.onClick.Add(OnListNoticeBtnGoClick);
             }
             item.m_btnGo.data = noticeInfo;
+
             UI_ListNoticeItem.ProxyEnd();
         }
+
         private async void OnListNoticeBtnGoClick(EventContext context)
         {
             _ui.m_listActivity.visible = false;
@@ -203,48 +217,33 @@ namespace GFGGame
 
         private void UpdateInfo()
         {
-            if(activitydata == null)
-            {
-                activitydata = AdCfgArray.Instance.dataArray;
-            }
-            showActivity.Clear();
-            for (int i = 0; i < activitydata.Length; i++)
+            showActivity = NoticeDataManager.Instance.UpdateShowActivity();
+        }
+
+
+
+        private void UpdateTitleRedDot()
+        {
+            RedDotController.Instance.SetComRedDot(_ui.m_btnActivity, false);
+            RedDotController.Instance.SetComRedDot(_ui.m_btnNotice, false);
+
+            // 活动公告
+            for (int i = 0; i < showActivity.Count; i++)
             {
-                AdCfg adCfg = activitydata[i];
-                if (adCfg.activityId > 0)
+                if (NoticeDataManager.Instance.GetRedDotState(showActivity[i].jumpId, showActivity[i].activityId))
                 {
-                    if (ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId) == null) continue;
-                    ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId);
-                    if (TimeHelper.ServerNow() < activityInfo.StartTime || TimeHelper.ServerNow() > activityInfo.EndTime) continue;
+                    RedDotController.Instance.SetComRedDot(_ui.m_btnActivity, true, "", -25);
+                    break;
                 }
-                if (adCfg.NoticeTips != null && adCfg.NoticeTips != "")
+            }
+
+            // 系统公告
+            for (int i = 0; i < NoticeDataManager.Instance.NoticeInfos.Count; i++)
+            {
+                if (!NoticeDataManager.Instance.NoticeInfos[i].readStatus)
                 {
-                    if (adCfg.activityId != 0)
-                    {
-                        ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId);
-                        if (TimeHelper.ServerNow() < activityInfo.StartTime || TimeHelper.ServerNow() > activityInfo.EndTime)
-                        {
-
-                        }
-                        else
-                        {
-                            showActivity.Add(adCfg);
-                            continue;
-                        }
-                    }
-                    if (adCfg.startTime != "" && adCfg.startTime != null)
-                    {
-                        long startTime = TimeUtil.DateTimeToTimestamp(adCfg.startTime);
-                        long endTime = TimeUtil.DateTimeToTimestamp(adCfg.endTime);
-                        if (TimeHelper.ServerNow() < startTime || TimeHelper.ServerNow() > endTime)
-                        {
-                            continue;
-                        }
-                        else
-                        {
-                            showActivity.Add(adCfg);
-                        }
-                    }
+                    RedDotController.Instance.SetComRedDot(_ui.m_btnNotice, true, "", -25);
+                    break;
                 }
             }
         }

BIN
GameClient/Assets/ResIn/UI/Notice/Notice_fui.bytes