From 01a6a9d95daa7d650f29b867baa437b8b1e38697 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 17 三月 2026 19:26:57 +0800
Subject: [PATCH] 262 幻境阁-客户端 支持配置关联皮肤解锁
---
Main/System/HeroUI/HeroUIManager.Collect.cs | 85 +++++++++++++++++++++++++++++++++---------
1 files changed, 67 insertions(+), 18 deletions(-)
diff --git a/Main/System/HeroUI/HeroUIManager.Collect.cs b/Main/System/HeroUI/HeroUIManager.Collect.cs
index 862f42e..36417b6 100644
--- a/Main/System/HeroUI/HeroUIManager.Collect.cs
+++ b/Main/System/HeroUI/HeroUIManager.Collect.cs
@@ -30,25 +30,10 @@
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);
+ // 1. 璋冪敤灏佽濂界殑鏂规硶锛氭娴嬪苟瑙﹀彂鏂扮毊鑲や簨浠�
+ CheckAndTriggerNewSkinEvents(heroID, newHeroData);
- // 濡傛灉鏃ф暟鎹腑娌℃湁杩欎釜鐨偆(棣栨鑾峰緱)锛屾垨鑰呯姸鎬佸彂鐢熶簡鍙樺寲
- if (oldSkin == null || oldSkin.State != newSkin.State)
- {
- OnHeroSkinStateChanged?.Invoke(heroID, (int)newSkin.SkinID, newSkin.State);
- }
- }
- }
- }
-
+ // 2. 鏇存柊瀛楀吀涓烘渶鏂扮殑缃戠粶鍖呮暟鎹�
heroCollectInfoDic[heroID] = newHeroData;
}
@@ -60,6 +45,70 @@
OnHeroCollectEvent?.Invoke();
}
+ public event Action<int, int> OnNewSkinAcquired;// 褰撶帺瀹惰幏寰楁柊鐨偆锛堟縺娲荤毊鑲わ級鏃惰Е鍙戠殑浜嬩欢 HeroID SkinID
+
+ /// <summary>
+ /// 妫�鏌ュ苟瑙﹀彂鑾峰緱鏂扮毊鑲ょ殑浜嬩欢
+ /// </summary>
+ private void CheckAndTriggerNewSkinEvents(int heroID, HB122_tagSCHeroInfo.tagSCHero newHeroData)
+ {
+ // 濡傛灉鏂版暟鎹腑娌℃湁鐨偆淇℃伅锛岀洿鎺ヨ繑鍥�
+ if (newHeroData?.SkinList == null || newHeroData?.SkinCnt <= 0) return;
+
+ // 灏濊瘯鑾峰彇鏃ф暟鎹�
+ bool isOldHeroExist = heroCollectInfoDic.TryGetValue(heroID, out var oldHeroData);
+
+ for (int j = 0; j < newHeroData.SkinCnt; j++)
+ {
+ var newSkin = newHeroData.SkinList[j];
+
+ // 濡傛灉鏂扮毊鑲ゆ湭婵�娲伙紝鐩存帴璺宠繃褰撳墠寰幆锛屾鏌ヤ笅涓�涓毊鑲�
+ if (newSkin.State <= 0) continue;
+
+ bool isNewlyAcquired = false;
+
+ if (!isOldHeroExist)
+ {
+ // 鍦烘櫙A锛氳繖鏄竴涓叏鏂扮殑姝﹀皢锛屼笖鑷甫浜嗗凡婵�娲荤殑闈為粯璁ょ毊鑲�
+ isNewlyAcquired = true;
+ }
+ else
+ {
+ // 鍦烘櫙B锛氬凡鏈夌殑鑰佹灏嗭紝闇�瑕佸姣旀棫鏁版嵁鐪嬭繖涓毊鑲ゆ槸涓嶆槸鍒氬垰鎵嶈幏寰楃殑
+ bool foundOldSkin = false;
+
+ if (oldHeroData.SkinList != null)
+ {
+ for (int k = 0; k < oldHeroData.SkinCnt; k++)
+ {
+ var oldSkin = oldHeroData.SkinList[k];
+ if (oldSkin.SkinID == newSkin.SkinID)
+ {
+ foundOldSkin = true;
+ // 濡傛灉鏃ф暟鎹腑璇ョ毊鑲ゆ湭婵�娲� (State == 0)锛岀幇鍦ㄦ縺娲讳簡锛岀畻浣滆幏寰楁柊鐨偆
+ if (oldSkin.State == 0)
+ {
+ isNewlyAcquired = true;
+ }
+ break;
+ }
+ }
+ }
+
+ // 濡傛灉鏃ф灏嗘暟鎹噷鍘嬫牴娌℃湁杩欎釜鐨偆鐨勬暟鎹紙鐜板湪鏄縺娲荤姸鎬侊級锛屼篃绠椾綔鑾峰緱鏂扮毊鑲�
+ if (!foundOldSkin)
+ {
+ isNewlyAcquired = true;
+ }
+ }
+
+ // 濡傛灉鏈�缁堝垽瀹氫负鈥滃叏鏂拌幏寰椻�濈殑鐨偆锛屽垯瑙﹀彂浜嬩欢
+ if (isNewlyAcquired)
+ {
+ OnNewSkinAcquired?.Invoke(heroID, (int)newSkin.SkinID);
+ }
+ }
+ }
// public int GetHeroCollectBookPer()
// {
--
Gitblit v1.8.0