From bd41d84bbd61de37bd880c591ecce690ebe294bd Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期日, 19 十月 2025 18:12:49 +0800
Subject: [PATCH] 65 子 【公会】基础主体 / 【公会】基础主体-客户端

---
 Main/System/Guild/GuildEmblemModel.cs |  188 ++++++++++++++++++++--------------------------
 1 files changed, 83 insertions(+), 105 deletions(-)

diff --git a/Main/System/Guild/GuildEmblemModel.cs b/Main/System/Guild/GuildEmblemModel.cs
index 1d6d526..d50ac7a 100644
--- a/Main/System/Guild/GuildEmblemModel.cs
+++ b/Main/System/Guild/GuildEmblemModel.cs
@@ -13,14 +13,11 @@
 
 public class GuildEmblemModel : GameSystemManager<GuildEmblemModel>
 {
-    public readonly int MaxItemRowCount = 6;    // 涓�琛屽睍绀簒涓窘绔�
-    public readonly int FamilyActionsType = 15;     // 寰界珷绫诲瀷15
-    public readonly int FuncId = 237;
-    public int defaultFamilyEmblemId;           // 榛樿寰界珷ID
+    public readonly int FamilyActionsType = 15;     // 鍏細璁板綍寰界珷绫诲瀷15
 
-    public bool isSendA408Pack = false;
 
     private int m_NowChooseEmblemId;
+    public event Action ChooseEmblemIdChangeEvent;      //鍒囨崲寰界珷
     public int nowChooseEmblemId
     {
         get { return m_NowChooseEmblemId; }
@@ -32,19 +29,46 @@
     }
 
 
-    public event Action ChooseEmblemIdChangeEvent;      //鍒囨崲鏍囩椤�
+    //鍒涘缓鍏細鏃讹紝閫夋嫨鐨勫窘绔�
+    int m_CreateSelectEmblemId;
+    public event Action CreateSelectEmblemIdChangeEvent;
+    public int createSelectEmblemId
+    {
+        get { return m_CreateSelectEmblemId; }
+        set
+        {
+            m_CreateSelectEmblemId = value;
+            CreateSelectEmblemIdChangeEvent?.Invoke();
+        }
+    }
+    public string createEmblemWord = ""; //鍒涘缓鍏細鏃讹紝杈撳叆鐨勬棗鍙�
 
     Redpoint entranceRedPoint = new Redpoint(10702, MainRedDot.FairyEmbleManageRepoint); //浠欑洘绠$悊闈㈡澘鍏ュ彛绾㈢偣
+    // 鏃х殑鏄剧ず鍒楄〃锛岀敤浜庡垽鏂槸鍚︽湁鍙樺寲, 瀵规瘮绾㈢偣鏄剧ず
+    public List<int> oldShowActiveList = new List<int>();   // 鏃х殑婵�娲诲垪琛紝鐐瑰嚮鏂扮殑寰界珷鏃朵細鏇存柊锛屾垨鑰呭叧闂殑鏃跺�欐洿鏂�
+    public List<int> showList = new List<int>();
 
     public override void Init()
     {
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
-        defaultFamilyEmblemId = int.Parse(FuncConfigConfig.Get("FairyEmblem").Numerical1);
+        GuildManager.Instance.FamilyActionInfoEvent += OnFamilyActionInfoEvent;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
     }
 
     public override void Release()
     {
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
+        GuildManager.Instance.FamilyActionInfoEvent -= OnFamilyActionInfoEvent;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+    }
+
+    public void OnBeforePlayerDataInitialize()
+    {
+        m_NowChooseEmblemId = 0;
+        m_CreateSelectEmblemId = 0;
+        createEmblemWord = "";
+        oldShowActiveList.Clear();
+        showList.Clear();
     }
 
     private void OnRefreshFairyInfo()
@@ -59,97 +83,65 @@
         // 浠呯洘涓昏兘鐪嬪埌
         if (!IsCaptain())
             return;
-        // 浠欑洘2绾у嚭鐜�
-        if (PlayerDatas.Instance.fairyData == null || PlayerDatas.Instance.fairyData.fairy.FamilyLV != 2)
-            return;
-        // 鍙嚭鐜颁竴娆�
-        if (GetRedPointShow())
+        
+        if (!GetRedPointShow())
             return;
         entranceRedPoint.state = RedPointState.Simple;
     }
 
-    string localStr = "FairyEmblemEntranceRedPoint_";
-
+    // 鏂版棫鍒楄〃瀵规瘮鏄剧ず绾㈢偣
     public bool GetRedPointShow()
     {
-        return LocalSave.GetBool(localStr + PlayerDatas.Instance.PlayerId);
-    }
+        if (oldShowActiveList.IsNullOrEmpty())
+            return false;
 
-    public void SetRedPointShow()
-    {
-        LocalSave.SetBool(localStr + PlayerDatas.Instance.PlayerId, true);
-    }
-
-    public bool TryGetNowEmblemID(out int nowID)
-    {
-        nowID = 0;
-        int emblemID = (int)PlayerDatas.Instance.fairyData.fairy.EmblemID;
-        if (FamilyEmblemConfig.HasKey(emblemID) && IsUnLock(emblemID))
+        for (int i = 0; i < showList.Count; i++)
         {
-            nowID = (int)emblemID;
-            return true;
-        }
-
-        if (FamilyEmblemConfig.HasKey(defaultFamilyEmblemId))
-        {
-            nowID = defaultFamilyEmblemId;
-            return true;
-        }
-
-        nowID = 0;
-        return false;
-
-    }
-
-    // 灞曠ず鎸囧畾寰界珷 琛ㄤ腑鎵句笉鍒板窘绔犲氨鏄剧ず榛樿鐨�
-    public void ShowEmblem(int emblemID, ImageEx imgTitle, float scale = 1.0f)
-    {
-        int nowEmblemID = emblemID;
-        if (!FamilyEmblemConfig.HasKey(nowEmblemID))
-        {
-            nowEmblemID = defaultFamilyEmblemId;
-        }
-        FamilyEmblemConfig config = FamilyEmblemConfig.Get(nowEmblemID);
-        UIFrame frame = imgTitle.GetComponent<UIFrame>();
-        if (UIFrameMgr.Inst.ContainsDynamicImage(config.Image))
-        {
-            if (frame == null)
-                frame = imgTitle.gameObject.AddComponent<UIFrame>();
-
-            List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(config.Image);
-            if (!spriteList.IsNullOrEmpty())
+            //宸茶В閿佺殑
+            if (!oldShowActiveList.Contains(showList[i]) && IsUnLock(showList[i]))
             {
-                imgTitle.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height);
+                return true;
             }
-
-            imgTitle.raycastTarget = false;
-            frame.ResetFrame(config.Image);
-            frame.enabled = true;
         }
-        else
-        {
-            if (frame != null)
-                frame.enabled = false;
-            imgTitle.SetSprite(config.Image);
-            imgTitle.SetNativeSize();
-        }
-        imgTitle.rectTransform.localScale = new Vector3(scale, scale, scale);
+        return false;
     }
 
 
-
-
-    public List<int> GetShowList()
+    public List<int> SortShowList()
     {
-        List<int> showList = new List<int>();
-        List<int> keys = FamilyEmblemConfig.GetKeys();
-        for (int i = 0; i < keys.Count; i++)
+        if (showList.IsNullOrEmpty())
         {
-            showList.Add(keys[i]);
+            List<int> keys = FamilyEmblemConfig.GetKeys();
+            for (int i = 0; i < keys.Count; i++)
+            {
+                showList.Add(keys[i]);
+            }
         }
         showList.Sort(Cmp);
+
+        if (oldShowActiveList.IsNullOrEmpty())
+        {
+            // 鍒濆鍖栨椂锛屽埛鏂版棫鐨勬縺娲诲垪琛�
+            RefreshOldShowActiveList();
+        }
         return showList;
     }
+
+    // 鍒锋柊鏃х殑婵�娲诲垪琛紝鐢ㄤ簬瀵规瘮绾㈢偣鏄剧ず
+    public void RefreshOldShowActiveList()
+    {
+        oldShowActiveList.Clear();
+        for (int i = 0; i < showList.Count; i++)
+        {
+            //宸茶В閿佺殑
+            if (IsUnLock(showList[i]))
+            {
+                oldShowActiveList.Add(showList[i]);
+            }
+        }
+    }
+    
+
 
     // 宸叉縺娲�>鏈縺娲�
     private int Cmp(int a, int b)
@@ -180,12 +172,10 @@
         }
 
         return a.CompareTo(b);
-    }
+        }
 
     public int GetSortNum(int emblemID)
     {
-        if (!FamilyEmblemConfig.HasKey(emblemID))
-            return 0;
         return FamilyEmblemConfig.Get(emblemID).SortNum;
     }
 
@@ -200,7 +190,7 @@
         return config.UnlockFamilyLV > 0 ? FairyEmblemUnlockMethodType.LV : FairyEmblemUnlockMethodType.Active;
     }
 
-    // 鎸囧畾鐨勫窘绔犺В閿佷簡鍚�
+    // 寰界珷鏄惁瑙i攣锛屾湭鍔犲叆鍏細鐨勪篃鍙互璋冪敤鍒ゆ柇
     public bool IsUnLock(int emblemId)
     {
         FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId);
@@ -220,8 +210,13 @@
                 return true;
 
             case FairyEmblemUnlockMethodType.LV:
+                int lv = 1; //娌℃湁鍏細鐨勬儏鍐�
+                if (PlayerDatas.Instance.fairyData.fairy != null)
+                {
+                    lv = PlayerDatas.Instance.fairyData.fairy.FamilyLV;
+                }
                 //鎵�鍦ㄤ粰鐩熺瓑绾у皬浜庡窘绔犺姹傜瓑绾� 鏈В閿�
-                if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < config.UnlockFamilyLV)
+                if (lv < config.UnlockFamilyLV)
                     return false;
                 return true;
 
@@ -238,13 +233,10 @@
         }
     }
 
-    public bool IsUsing(int emblemId)
+
+    void OnFamilyActionInfoEvent(int familyId, int actionType)
     {
-        if (!TryGetNowEmblemID(out int Id))
-        {
-            return false;
-        }
-        return emblemId == Id;
+        UpdateRedPoint();
     }
 
     public bool IsLimitTime(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
@@ -272,10 +264,10 @@
 
     public bool IsCaptain()
     {
-        return (int)PlayerDatas.Instance.fairyData.mine.FmLV == 3;
+        return PlayerDatas.Instance.fairyData.mine.FmLV == 3;
     }
 
-    // 灏濊瘯浠庡皝鍖呬腑寰楀埌鎸囧畾鐨勫窘绔犳椂鏁堜俊鎭紙娲诲姩閫斿緞鑾峰彇鐨勫窘绔�,瀹氬埗寰界珷锛�
+    // 鑾峰緱寰界珷璁板綍淇℃伅淇℃伅锛堟椿鍔ㄩ�斿緞鑾峰彇鐨勫窘绔�,瀹氬埗寰界珷锛夛紝value1鏄窘绔營D锛寁alue2鏄窘绔犲埌鏈熸椂闂�
     private bool TryGetfamilyAction(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
     {
         familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction();
@@ -297,8 +289,6 @@
     public bool TryGetEffectID(int emblemId, out int effectID)
     {
         effectID = 0;
-        if (!FamilyEmblemConfig.HasKey(emblemId))
-            return false;
         FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId);
         if (!EffectConfig.HasKey(config.EffectID))
             return false;
@@ -308,15 +298,3 @@
 
 
 }
-
-public class EmblemModel
-{
-    public int emblemID { get; private set; }
-    public int emblemUIEffectID { get; private set; }
-
-    public EmblemModel(int emblemID, int emblemUIEffectID)
-    {
-        this.emblemID = emblemID;
-        this.emblemUIEffectID = emblemUIEffectID;
-    }
-}
\ No newline at end of file

--
Gitblit v1.8.0