From 7926eac37f1b8252e8f83bf2350492ee23f80bbe Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 17 三月 2026 15:59:29 +0800
Subject: [PATCH] 492 武将登场-客户端 时装商店不显示皮肤激活物品

---
 Main/Config/PartialConfigs/HeroSkinAttrConfig.cs |    6 ++++++
 Main/System/HeroDebut/HeroDebutSkinWin.cs        |   21 ++++++++++++++-------
 Main/System/HeroUI/HeroUIManager.Collect.cs      |   27 +++++++++++++++++++++++++--
 3 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/Main/Config/PartialConfigs/HeroSkinAttrConfig.cs b/Main/Config/PartialConfigs/HeroSkinAttrConfig.cs
index 2424c9b..95ed603 100644
--- a/Main/Config/PartialConfigs/HeroSkinAttrConfig.cs
+++ b/Main/Config/PartialConfigs/HeroSkinAttrConfig.cs
@@ -1,5 +1,6 @@
 
 using System.Collections.Generic;
+using System.Linq;
 
 public partial class HeroSkinAttrConfig : ConfigBase<int, HeroSkinAttrConfig>
 {
@@ -15,5 +16,10 @@
     {
         return itemIdToSkinIDDict.TryGetValue(itemID, out skinID);
     }
+
+    public static List<int> GetItemList()
+    {
+        return itemIdToSkinIDDict.Keys.ToList();
+    }
 }
 
diff --git a/Main/System/HeroDebut/HeroDebutSkinWin.cs b/Main/System/HeroDebut/HeroDebutSkinWin.cs
index a0d383f..7d33b97 100644
--- a/Main/System/HeroDebut/HeroDebutSkinWin.cs
+++ b/Main/System/HeroDebut/HeroDebutSkinWin.cs
@@ -99,16 +99,23 @@
         _cell.Display(cell.index, arr);
     }
 
-    void CreateAwardScroller(int[][] arr)
+    void CreateAwardScroller(int[][] sourceArr)
     {
-        this.arr = arr;
+        if (sourceArr == null) return;
+
+        // 1. 鑾峰彇宸叉嫢鏈夌殑 ID 闆嗗悎 (浣跨敤 LINQ 绠�娲佹槑浜�)
+        var ownedItems = HeroSkinAttrConfig.GetItemList();
+        var itemIds = ownedItems != null ? new HashSet<int>(ownedItems) : new HashSet<int>();
+
+        // 2. 杩囨护鎺� items 涓凡鏈夌殑椤癸紝骞剁洿鎺ヨ祴鍊肩粰鎴愬憳鍙橀噺
+        // arr[i][0] 鍋囪涓哄垽鏂槸鍚﹀瓨鍦ㄤ簬 items 涓殑 ID
+        this.arr = System.Array.FindAll(sourceArr, row => !itemIds.Contains(row[0]));
+
+        // 3. 鍒锋柊 UI
         awardScroller.Refresh();
-        if (arr != null)
+        for (int i = 0; i < this.arr.Length; i++)
         {
-            for (int i = 0; i < arr.Length; i++)
-            {
-                awardScroller.AddCell(ScrollerDataType.Header, i);
-            }
+            awardScroller.AddCell(ScrollerDataType.Header, i);
         }
         awardScroller.Restart();
     }
diff --git a/Main/System/HeroUI/HeroUIManager.Collect.cs b/Main/System/HeroUI/HeroUIManager.Collect.cs
index 97ce61f..862f42e 100644
--- a/Main/System/HeroUI/HeroUIManager.Collect.cs
+++ b/Main/System/HeroUI/HeroUIManager.Collect.cs
@@ -22,13 +22,36 @@
 
     // public int allHeroBookPer; //鍏ㄤ綋姝﹀皢鐨勫浘閴存縺娲荤櫨鍒嗘瘮
     public event Action OnHeroCollectEvent;
-
+    public event Action<int, int, int> OnHeroSkinStateChanged;// 鐨偆鐘舵�佸彉鍖栦簨浠� (鍙傛暟: HeroID, SkinID, 鏂扮殑State)
     public void UpdateHeroCollectInfo(HB122_tagSCHeroInfo netPack)
     {
         for (int i = 0; i < netPack.HeroCnt; i++)
         {
-            heroCollectInfoDic[(int)netPack.HeroInfoList[i].HeroID] = netPack.HeroInfoList[i];
+            var newHeroData = netPack.HeroInfoList[i];
+            int heroID = (int)newHeroData.HeroID;
+
+            // ---- 鏂板锛氬姣旀棫鏁版嵁锛屾娴嬬毊鑲ょ姸鎬佸彉鍖� ----
+            if (heroCollectInfoDic.TryGetValue(heroID, out var oldHeroData))
+            {
+                if (newHeroData.SkinList != null)
+                {
+                    foreach (var newSkin in newHeroData.SkinList)
+                    {
+                        // 鍦ㄦ棫鏁版嵁涓鎵惧搴旂殑鐨偆
+                        var oldSkin = oldHeroData.SkinList?.FirstOrDefault(s => s.SkinID == newSkin.SkinID);
+
+                        // 濡傛灉鏃ф暟鎹腑娌℃湁杩欎釜鐨偆(棣栨鑾峰緱)锛屾垨鑰呯姸鎬佸彂鐢熶簡鍙樺寲
+                        if (oldSkin == null || oldSkin.State != newSkin.State)
+                        {
+                            OnHeroSkinStateChanged?.Invoke(heroID, (int)newSkin.SkinID, newSkin.State);
+                        }
+                    }
+                }
+            }
+
+            heroCollectInfoDic[heroID] = newHeroData;
         }
+
         // allHeroBookPer = GetHeroCollectBookPer();
         UpdateHeroBookRedpoint();
         RefreshAllSkinAttr();

--
Gitblit v1.8.0