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