From 82e8a3f6ff7aaec06d1b60463a545a8bb031f546 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 10 六月 2026 18:15:39 +0800
Subject: [PATCH] 588 公会攻防战 修复若干bug

---
 Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureWin.cs  |    2 +-
 Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs      |   23 +++++++++++++++++------
 Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureGrid.cs |   10 ++++++++--
 Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureCell.cs |   15 +++++++++++----
 4 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
index 18c3de8..f61d1a1 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
@@ -476,7 +476,7 @@
     public void ClearMainRedpoint()
     {
         hasShowedMainRedpoint = true;
-        mainRedpoint.state = RedPointState.None;
+        UpdateRedpoint();
     }
 
     private bool HasShopFreeItem()
@@ -761,8 +761,8 @@
     /// <summary>瀹濆簱濂栧姳绫诲瀷ID (瀵瑰簲CA504鐨凴ewardType)</summary>
     public const byte TREASURE_REWARD_TYPE = 11;
 
-    /// <summary>缂撳瓨鏍煎瓙寮�鍚褰�: Key=鏍煎瓙缂栧彿(1~n), Value=AwardID</summary>
-    public Dictionary<int, int> treasureGridRecords = new Dictionary<int, int>();
+    /// <summary>缂撳瓨鏍煎瓙寮�鍚褰�: Key=鏍煎瓙缂栧彿(1~n), Value=寮�鍚褰�</summary>
+    public Dictionary<int, GuildAtkDefBatTreasureRecord> treasureGridRecords = new Dictionary<int, GuildAtkDefBatTreasureRecord>();
 
     /// <summary>鏍囪瀹濆簱绐楀彛鏄惁鎵撳紑,鐢ㄤ簬鏀跺埌A525鏃惰嚜鍔ㄥ埛鏂�</summary>
     public bool isTreasureWinOpen = false;
@@ -787,17 +787,22 @@
         {
             if (mem.GridNum > 0)
             {
-                treasureGridRecords[mem.GridNum] = mem.AwardID;
+                treasureGridRecords[mem.GridNum] = new GuildAtkDefBatTreasureRecord
+                {
+                    AwardID = mem.AwardID,
+                    PlayerName = UIHelper.ServerStringTrim(mem.Name),
+                };
             }
         }
 
         if (isTreasureWinOpen)
         {
             int openGrid = pendingOpenGridIndex;
-            if (openGrid > 0 && treasureGridRecords.TryGetValue(openGrid, out var awardID))
+            GuildAtkDefBatTreasureRecord treasureRecord;
+            if (openGrid > 0 && treasureGridRecords.TryGetValue(openGrid, out treasureRecord))
             {
                 pendingOpenGridIndex = 0;
-                OnTreasureGridOpenEvent?.Invoke(openGrid, awardID);
+                OnTreasureGridOpenEvent?.Invoke(openGrid, treasureRecord.AwardID);
             }
             OnTreasureDataUpdateEvent?.Invoke();
         }
@@ -1010,3 +1015,9 @@
     }
     #endregion
 }
+
+public class GuildAtkDefBatTreasureRecord
+{
+    public int AwardID;
+    public string PlayerName;
+}
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureCell.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureCell.cs
index c21298a..732791a 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureCell.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureCell.cs
@@ -11,9 +11,9 @@
     /// <param name="startIndex">璧峰鏍煎瓙搴忓彿(浠�1寮�濮�)</param>
     /// <param name="gridCount">鎬绘牸瀛愭暟</param>
     /// <param name="isWin">鏄惁鑳滃埄</param>
-    /// <param name="openedGrids">宸插紑鍚殑鏍煎瓙瀛楀吀 Key=鏍煎瓙缂栧彿, Value=AwardID</param>
+    /// <param name="openedGrids">宸插紑鍚殑鏍煎瓙瀛楀吀 Key=鏍煎瓙缂栧彿, Value=寮�鍚褰�</param>
     /// <param name="openAnimGridIndex">鎾斁寮�鍚姩鐢荤殑鏍煎瓙缂栧彿(0=鏃�)</param>
-    public void SetData(int startIndex, int gridCount, bool isWin, Dictionary<int, int> openedGrids, int openAnimGridIndex = 0)
+    public void SetData(int startIndex, int gridCount, bool isWin, Dictionary<int, GuildAtkDefBatTreasureRecord> openedGrids, int openAnimGridIndex = 0)
     {
         for (int i = 0; i < grids.Length; i++)
         {
@@ -22,9 +22,16 @@
             {
                 grids[i].SetActive(true);
                 int awardID = 0;
-                bool isOpened = openedGrids != null && openedGrids.TryGetValue(gridIndex, out awardID);
+                string playerName = string.Empty;
+                GuildAtkDefBatTreasureRecord treasureRecord = null;
+                bool isOpened = openedGrids != null && openedGrids.TryGetValue(gridIndex, out treasureRecord);
+                if (isOpened && treasureRecord != null)
+                {
+                    awardID = treasureRecord.AwardID;
+                    playerName = treasureRecord.PlayerName;
+                }
                 bool playAnim = openAnimGridIndex > 0 && gridIndex == openAnimGridIndex;
-                grids[i].Init(gridIndex, isWin, isOpened, (ushort)awardID, playAnim);
+                grids[i].Init(gridIndex, isWin, isOpened, (ushort)awardID, playerName, playAnim);
             }
             else
             {
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureGrid.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureGrid.cs
index 360acdd..c84768f 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureGrid.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureGrid.cs
@@ -28,6 +28,7 @@
     private int gridIndex;
     private bool isOpened;
     private ushort awardID;
+    private string playerName;
 
     /// <summary>
     /// 鍒濆鍖栨牸瀛�
@@ -36,12 +37,14 @@
     /// <param name="isWin">鏄惁鑳滃埄</param>
     /// <param name="opened">鏄惁宸插紑鍚�</param>
     /// <param name="awardId">濂栧姳ID(宸插紑鍚椂鏈夋晥)</param>
+    /// <param name="name">寮�鍚牸瀛愮殑鐜╁鍚�</param>
     /// <param name="playOpenAnim">鏄惁鎾斁寮�鍚姩鐢�(缈荤墝鐮寸鐗规晥)</param>
-    public void Init(int index, bool isWin, bool opened, ushort awardId, bool playOpenAnim = false)
+    public void Init(int index, bool isWin, bool opened, ushort awardId, string name, bool playOpenAnim = false)
     {
         gridIndex = index;
         isOpened = opened;
         awardID = awardId;
+        playerName = name;
 
         // 鏍煎瓙搴忓彿
         topNumText.text = index.ToString();
@@ -85,6 +88,10 @@
         topNumText.SetActive(!isOpened);
 
         qualityImage.SetActive(isOpened);
+        itemImage.SetActive(isOpened);
+        itemCntText.text = string.Empty;
+        itemNameText.text = isOpened ? playerName : string.Empty;
+
         if (isOpened && awardID > 0)
         {
             var config = FamilyAtkDefBatTreasureConfig.Get(awardID);
@@ -95,7 +102,6 @@
                 {
                     itemImage.SetItemSprite(config.ItemID);
                     itemCntText.text = config.ItemCount > 1 ? $"x{config.ItemCount}" : string.Empty;
-                    itemNameText.text = itemConfig.ItemName;
                 }
 
                 qualityImage.SetSprite($"GuildAtkDefBatTreasureAwardColor{config.AwardColor}");
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureWin.cs
index f4e02c0..e147392 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatTreasureWin.cs
@@ -32,7 +32,7 @@
 
         awardButton.AddListener(() =>
         {
-            UIManager.Instance.OpenWindow<GuildAtkDefBatAwardPreviewWin>();
+            UIManager.Instance.OpenWindow<GuildAtkDefBatAwardPreviewWin>(1);
         });
 
         lastLineButton.AddListener(() =>

--
Gitblit v1.8.0