From 16d0758370a252892fa6378f7e2614cf8b4bac7e Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 18 三月 2026 12:00:19 +0800
Subject: [PATCH] 262 幻境阁-客户端 武将表配置了开服第x天展示的武将,在没图鉴展示前不显示头像和形象

---
 Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs  |   15 +++++++
 Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs     |    8 ++++
 Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs |   16 +++++++
 Main/Config/PartialConfigs/ModelConfig.cs                    |   20 ++++++++-
 Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs      |    7 +++
 Main/System/PhantasmPavilion/PhantasmPavilionManager.cs      |   42 +++++++++++++++++++++
 6 files changed, 103 insertions(+), 5 deletions(-)

diff --git a/Main/Config/PartialConfigs/ModelConfig.cs b/Main/Config/PartialConfigs/ModelConfig.cs
index 84b2b20..92fee28 100644
--- a/Main/Config/PartialConfigs/ModelConfig.cs
+++ b/Main/Config/PartialConfigs/ModelConfig.cs
@@ -19,7 +19,21 @@
         {
             return new List<int>();
         }
-        return tabTypeDict[tabType];
-    }
 
-}
+        List<int> allKeys = tabTypeDict[tabType];
+        List<int> validKeys = new List<int>();
+
+        for (int i = 0; i < allKeys.Count; i++)
+        {
+            int id = allKeys[i];
+            var cfg = Get(id);
+            // 杩囨护鏈揪鍒板紑鏈嶅ぉ鏁扮殑姝﹀皢鍜岀毊鑲ゅご鍍�
+            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(cfg.UnlockWay, cfg.UnlockValue))
+            {
+                validKeys.Add(id);
+            }
+        }
+
+        return validKeys;
+    }
+}
\ No newline at end of file
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs b/Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs
index 0057ded..fe0f136 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs
@@ -8,7 +8,20 @@
     }
     public List<int> GetKeyList()
     {
-        return PlayerFaceConfig.GetKeys();
+        List<int> allKeys = PlayerFaceConfig.GetKeys();
+        List<int> validKeys = new List<int>();
+
+        for (int i = 0; i < allKeys.Count; i++)
+        {
+            int id = allKeys[i];
+            var faceCfg = PlayerFaceConfig.Get(id);
+            // 杩囨护鏈揪鍒板紑鏈嶅ぉ鏁扮殑姝﹀皢鍜岀毊鑲ゅご鍍�
+            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(faceCfg.UnlockWay, faceCfg.UnlockValue))
+            {
+                validKeys.Add(id);
+            }
+        }
+        return validKeys;
     }
     public int GetResourceType(int id)
     {
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs b/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
index 11d6121..88c0a68 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
@@ -87,6 +87,7 @@
         manager.OnUpdateFaceInfoEvent += OnUpdateFaceInfoEvent;
         manager.OnUpdateFacePicInfo += OnUpdateFacePicInfo;
         manager.OnTimeOut += OnTimeOut;
+        TimeMgr.Instance.OnDayEvent += OnDayEvent;
         InitRedPoint();
         SelectTiltleBtn();
     }
@@ -106,11 +107,17 @@
         manager.OnUpdateFaceInfoEvent -= OnUpdateFaceInfoEvent;
         manager.OnUpdateFacePicInfo -= OnUpdateFacePicInfo;
         manager.OnTimeOut -= OnTimeOut;
+        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
 
         manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Face, functionOrder + 1);
         manager.UpdateRedPoint();
     }
 
+    private void OnDayEvent()
+    {
+        SelectTiltleBtn();
+    }
+
     private void OnTimeOut()
     {
         RefreshAll(manager.nowType);
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs b/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
index 9a69423..0efa93c 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
@@ -54,6 +54,7 @@
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
         HeroUIManager.Instance.OnNewSkinAcquired += OnNewSkinAcquired;
+        TimeMgr.Instance.OnDayEvent += OnDayEvent;
         InitTable();
         InitTabRedPoint();
     }
@@ -67,6 +68,12 @@
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
         HeroUIManager.Instance.OnNewSkinAcquired -= OnNewSkinAcquired;
+        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
+    }
+
+    private void OnDayEvent()
+    {
+        UpdateRedPoint();
     }
 
     private void OnNewSkinAcquired(int arg1, int arg2)
@@ -675,6 +682,41 @@
         OnTimeOut?.Invoke();
     }
 
+
+    /// <summary>
+    /// 鍒ゆ柇璇ュ舰璞�/澶村儚鏄惁鍙互鏄剧ず鍦ㄥ够澧冮榿鍒楄〃涓�
+    /// </summary>
+    public bool IsFaceOrModelVisible(int unlockWay, int unlockValue)
+    {
+        if (unlockWay == 3)
+        {
+            int heroId = unlockValue;
+            return IsHeroCollectionOpen(heroId);
+        }
+        else if (unlockWay == 4)
+        {
+            // 鐨偆閫斿緞锛孶nlockValue 鏄� SkinID
+            int skinId = unlockValue;
+            return IsHeroCollectionOpen(HeroConfig.GetHeroIDBySkinID(skinId));
+        }
+
+        // 鍏朵粬鑾峰彇閫斿緞锛堝娲诲姩銆侀粯璁ょ瓑锛夛紝涓嶅仛闄愬埗锛岀洿鎺ユ樉绀�
+        return true;
+    }
+
+    /// <summary>
+    /// 妫�鏌ュ搴旀灏嗘槸鍚﹁揪鍒颁簡寮�鏈嶅ぉ鏁拌姹�
+    /// </summary>
+    public bool IsHeroCollectionOpen(int heroId)
+    {
+        var config = HeroConfig.Get(heroId);
+        if (config == null) return false;
+
+        // 0琛ㄧず涓嶉檺鍒跺紑鏈嶅ぉ鏁�
+        if (config.OpenCollectionDay > 0 && TimeUtility.OpenDay + 1 < config.OpenCollectionDay) return false;
+        return true;
+    }
+
     #region 鏀跺皝鍖�
     public event Action OnUpdateModelStarAdd;
     public void UpdateModelInfo(HB119_tagSCModelInfo vNetData)
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs b/Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs
index 7fd71c5..26b19cc 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs
@@ -8,7 +8,21 @@
     }
     public List<int> GetKeyList()
     {
-        return ModelConfig.GetKeys();
+        List<int> allKeys = ModelConfig.GetKeys();
+        List<int> validKeys = new List<int>();
+
+        for (int i = 0; i < allKeys.Count; i++)
+        {
+            int id = allKeys[i];
+            var modelCfg = ModelConfig.Get(id);
+
+            // 杩囨护鏈揪鍒板紑鏈嶅ぉ鏁扮殑姝﹀皢鍜岀毊鑲ゅ舰璞�
+            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(modelCfg.UnlockWay, modelCfg.UnlockValue))
+            {
+                validKeys.Add(id);
+            }
+        }
+        return validKeys;
     }
     public int GetResourceType(int id)
     {
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs b/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
index 77a7fa0..86b4cdf 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
@@ -60,6 +60,8 @@
         manager.OnUpdateModelInfoEvent += OnUpdateModelInfoEvent;
         manager.OnTimeOut += OnTimeOut;
         manager.OnUpdateModelStarAdd += OnUpdateModelStarAdd;
+        TimeMgr.Instance.OnDayEvent += OnDayEvent;
+
         InitRedPoint();
         TabSetActive();
         SelectTiltleBtn();
@@ -77,11 +79,17 @@
         manager.OnUpdateModelInfoEvent -= OnUpdateModelInfoEvent;
         manager.OnTimeOut -= OnTimeOut;
         manager.OnUpdateModelStarAdd -= OnUpdateModelStarAdd;
+        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
 
         manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Model, functionOrder + 1);
         manager.UpdateRedPoint();
     }
 
+    private void OnDayEvent()
+    {
+        SelectTiltleBtn();
+    }
+
     private void OnTimeOut()
     {
         RefreshAll(manager.nowType, functionOrder + 1);

--
Gitblit v1.8.0