From 89343a7a0909e5244a3b69c4db1294de4536243b Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 15 十二月 2025 18:15:22 +0800
Subject: [PATCH] 262 幻境阁系统-客户端 新增仅适用武将解锁的头像和形象的红点移除规则

---
 Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs         |   15 ++++++-
 Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs          |   17 ++++++--
 Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs |   37 ++++++++++++++++--
 3 files changed, 57 insertions(+), 12 deletions(-)

diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs b/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
index 8287138..6e49784 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
@@ -66,9 +66,9 @@
     protected override void InitComponent()
     {
         base.InitComponent();
-        btnFace.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Face); });
-        btnFacePic.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.FacePic); });
-        btnChatBox.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.ChatBox); });
+        btnFace.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Face, true); });
+        btnFacePic.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.FacePic, true); });
+        btnChatBox.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.ChatBox, true); });
         btnAllAdd.AddListener(() => { AttributeManager.Instance.OpenTotalAttributeWin(manager.GetTotalAttr()); });
     }
 
@@ -106,6 +106,9 @@
         manager.OnUpdateFaceInfoEvent -= OnUpdateFaceInfoEvent;
         manager.OnUpdateFacePicInfo -= OnUpdateFacePicInfo;
         manager.OnTimeOut -= OnTimeOut;
+
+        manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Face, functionOrder + 1);
+        manager.UpdateRedPoint();
     }
 
     private void OnTimeOut()
@@ -153,9 +156,15 @@
         }
     }
 
-    void SelectTeamFunc(PhantasmPavilionType type)
+    void SelectTeamFunc(PhantasmPavilionType type, bool isRemove = false)
     {
         manager.SetSelectItemId(type);
+        if (isRemove)
+        {
+            manager.RemoveAllNewHeroByTabType(manager.nowType);
+            manager.UpdateRedPoint();
+            RefreshAll(manager.nowType, false);
+        }
         manager.nowType = type;
         CreateAll(type);
     }
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs b/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
index 85c4add..923a788 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
@@ -182,7 +182,31 @@
         UpdateRedPoint();
     }
 
-    public void RemoveNewHero(PhantasmPavilionType type, int id)
+    public void RemoveAllNewHeroByTabType(PhantasmPavilionType type, int tabType = 0)
+    {
+        List<int> list = null;
+        switch (type)
+        {
+            case PhantasmPavilionType.Model:
+                list = ShowItemList(type, tabType);
+                break;
+            case PhantasmPavilionType.Face:
+                list = GetTableKeys(type);
+                break;
+            default:
+                return;
+        }
+
+        if (list.IsNullOrEmpty())
+            return;
+        foreach (var id in list)
+        {
+            RemoveNewHero(type, id, false);
+        }
+        SaveLocal();
+    }
+
+    public void RemoveNewHero(PhantasmPavilionType type, int id, bool isSave = true)
     {
         if (!Has(type, id))
             return;
@@ -194,20 +218,23 @@
         switch (type)
         {
             case PhantasmPavilionType.Model:
-                RemoveNewHero(newHeroIDModelList, unlockValue);
+                RemoveNewHero(newHeroIDModelList, unlockValue, isSave);
                 break;
             case PhantasmPavilionType.Face:
-                RemoveNewHero(newHeroIDFaceList, unlockValue);
+                RemoveNewHero(newHeroIDFaceList, unlockValue, isSave);
                 break;
         }
     }
 
-    void RemoveNewHero(List<int> list, int heroID)
+    void RemoveNewHero(List<int> list, int heroID, bool isSave = true)
     {
         if (!list.Contains(heroID))
             return;
         list.Remove(heroID);
-        SaveLocal();
+        if (isSave)
+        {
+            SaveLocal();
+        }
         UpdateRedPoint();
     }
 
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs b/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
index 284f3f2..580589a 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
@@ -43,8 +43,8 @@
     protected override void InitComponent()
     {
         base.InitComponent();
-        btnTabType1.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Model, 0); });
-        btnTabType2.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Model, 1); });
+        btnTabType1.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Model, 0, true); });
+        btnTabType2.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Model, 1, true); });
         btnAllAdd.AddListener(() => { AttributeManager.Instance.OpenTotalAttributeWin(manager.GetTotalAttr()); });
     }
 
@@ -77,6 +77,9 @@
         manager.OnUpdateModelInfoEvent -= OnUpdateModelInfoEvent;
         manager.OnTimeOut -= OnTimeOut;
         manager.OnUpdateModelStarAdd -= OnUpdateModelStarAdd;
+
+        manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Model, functionOrder + 1);
+        manager.UpdateRedPoint();
     }
 
     private void OnTimeOut()
@@ -107,9 +110,15 @@
         SelectTeamFunc(PhantasmPavilionType.Model, 0);
     }
 
-    void SelectTeamFunc(PhantasmPavilionType type, int order)
+    void SelectTeamFunc(PhantasmPavilionType type, int order, bool isRemove = false)
     {
         manager.SetSelectItemId(type, order + 1);
+        if (isRemove)
+        {
+            manager.RemoveAllNewHeroByTabType(manager.nowType, functionOrder + 1);
+            manager.UpdateRedPoint();
+            RefreshAll(manager.nowType, functionOrder + 1, false);
+        }
         manager.nowType = type;
         functionOrder = order;
         CreateAll();

--
Gitblit v1.8.0