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/Guild/GuildEmblemModel.cs |   57 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 37 insertions(+), 20 deletions(-)

diff --git a/Main/System/Guild/GuildEmblemModel.cs b/Main/System/Guild/GuildEmblemModel.cs
index d50ac7a..764c811 100644
--- a/Main/System/Guild/GuildEmblemModel.cs
+++ b/Main/System/Guild/GuildEmblemModel.cs
@@ -13,7 +13,8 @@
 
 public class GuildEmblemModel : GameSystemManager<GuildEmblemModel>
 {
-    public readonly int FamilyActionsType = 15;     // 鍏細璁板綍寰界珷绫诲瀷15
+    
+    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> emblemActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
 
 
     private int m_NowChooseEmblemId;
@@ -51,15 +52,15 @@
     public override void Init()
     {
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
-        GuildManager.Instance.FamilyActionInfoEvent += OnFamilyActionInfoEvent;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        GuildManager.Instance.EnterOrQuitGuildEvent += OnEnterOrQuitGuildEvent;
     }
 
     public override void Release()
     {
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
-        GuildManager.Instance.FamilyActionInfoEvent -= OnFamilyActionInfoEvent;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+        GuildManager.Instance.EnterOrQuitGuildEvent -= OnEnterOrQuitGuildEvent;
     }
 
     public void OnBeforePlayerDataInitialize()
@@ -69,6 +70,12 @@
         createEmblemWord = "";
         oldShowActiveList.Clear();
         showList.Clear();
+        emblemActions.Clear();
+    }
+
+    public void OnEnterOrQuitGuildEvent(bool isEnter)
+    {
+        OnBeforePlayerDataInitialize();
     }
 
     private void OnRefreshFairyInfo()
@@ -130,13 +137,15 @@
     // 鍒锋柊鏃х殑婵�娲诲垪琛紝鐢ㄤ簬瀵规瘮绾㈢偣鏄剧ず
     public void RefreshOldShowActiveList()
     {
-        oldShowActiveList.Clear();
         for (int i = 0; i < showList.Count; i++)
         {
             //宸茶В閿佺殑
             if (IsUnLock(showList[i]))
             {
-                oldShowActiveList.Add(showList[i]);
+                if (!oldShowActiveList.Contains(showList[i]))
+                {
+                    oldShowActiveList.Add(showList[i]);
+                }
             }
         }
     }
@@ -234,11 +243,6 @@
     }
 
 
-    void OnFamilyActionInfoEvent(int familyId, int actionType)
-    {
-        UpdateRedPoint();
-    }
-
     public bool IsLimitTime(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
     {
         familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction();
@@ -267,20 +271,33 @@
         return PlayerDatas.Instance.fairyData.mine.FmLV == 3;
     }
 
+
+
+    // 鏇存柊寰界珷淇℃伅
+    public bool UpdateEmblemAction(HA513_tagMCFamilyActionInfo _package)
+    {
+        if (_package.ActionType != GuildManager.FamilyActionsType)
+        {
+            return false;
+        }
+
+        for (int i = 0; i < _package.FamilyActionList.Length; i++)
+        {
+            int emblemId = (int)_package.FamilyActionList[i].Value1;
+            emblemActions[emblemId] = _package.FamilyActionList[i];
+        }
+
+        
+        UpdateRedPoint();
+        return true;
+    }
+
     // 鑾峰緱寰界珷璁板綍淇℃伅淇℃伅锛堟椿鍔ㄩ�斿緞鑾峰彇鐨勫窘绔�,瀹氬埗寰界珷锛夛紝value1鏄窘绔營D锛寁alue2鏄窘绔犲埌鏈熸椂闂�
     private bool TryGetfamilyAction(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
     {
-        familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction();
-        if (GuildManager.Instance.TryGetFamilyActions(FamilyActionsType, out var actions))
+        if (emblemActions.TryGetValue(emblemId, out familyAction))
         {
-            for (int i = 0; i < actions.Length; i++)
-            {
-                if (actions[i].Value1 == emblemId)
-                {
-                    familyAction = actions[i];
-                    return true;
-                }
-            }
+            return true;
         }
 
         return false;

--
Gitblit v1.8.0