From 34179ffa10e510ba71522cb2bd1fd978b7fcbbe1 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 16 七月 2026 11:26:37 +0800
Subject: [PATCH] Revert "634 H5适配 获得英雄展示动态立绘的时机放到OnOpen"

---
 Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs |   76 +++++++++++++++++++++++++++++---------
 1 files changed, 58 insertions(+), 18 deletions(-)

diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
index 1825f1b..3a72a4c 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
@@ -40,12 +40,19 @@
     private List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> m_SortedDefenders;
     private List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> m_RemainingDefenders;
     private bool m_DeferBattleScrollerRefresh;
+    private static bool s_HasPendingScrollPosition;
+    private static float s_PendingScrollPosition;
 
     protected override void InitComponent()
     {
         base.InitComponent();
         funPresetDefBtn.AddListener(() =>
         {
+            if (GuildAtkDefBatManager.Instance.GetGuildBattleDisplayState() == 3)
+            {
+                SysNotifyMgr.Instance.ShowTip("GuildAtkDefBat7");
+                return;
+            }
             FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.GuildAtkDefBat);
         });
         funPresetAtkBtn.AddListener(() =>
@@ -128,7 +135,7 @@
     {
         OnDayRefresh();
         Display();
-        RefreshBattleScroller();
+        RefreshBattleScroller(true);
     }
 
     private void OnDayRefresh()
@@ -223,7 +230,7 @@
 
     void ShowTop3()
     {
-        atkCntImage.SetActive(GuildAtkDefBatManager.Instance.BatState == 3);
+        atkCntImage.SetActive(GuildAtkDefBatManager.Instance.GetGuildBattleDisplayState() == 3);
         var sortedMembers = GuildAtkDefBatManager.Instance.GetSortedFamilyMembers();
 
         int top3Count = Mathf.Min(top3NameText.Length, sortedMembers.Count);
@@ -252,10 +259,56 @@
         RefreshBattleScroller();
     }
 
+    public void SaveScrollPositionForNextOpen()
+    {
+        if (scroller == null || scroller.m_Scorller == null)
+            return;
+
+        s_PendingScrollPosition = scroller.m_Scorller.ScrollPosition;
+        s_HasPendingScrollPosition = true;
+    }
+
     /// <summary>
     /// 鍒锋柊鎴樺満Scroller鏁版嵁
     /// </summary>
-    private void RefreshBattleScroller()
+    private void RefreshBattleScroller(bool keepScrollPosition = false)
+    {
+        int oldCellCount = scroller.GetNumberOfCells(scroller.m_Scorller);
+        int newCellCount = RefreshBattleScrollerData();
+
+        if (keepScrollPosition && oldCellCount == newCellCount)
+        {
+            scroller.m_Scorller.RefreshActiveCellViews();
+            return;
+        }
+
+        // 閲嶆柊鏋勫缓Scroller
+        scroller.Refresh();
+
+        // 娣诲姞HeaderCell锛堢涓�鏉★級
+        scroller.AddCell(ScrollerDataType.Header, 0);
+
+        // 鍓╀綑鎴愬憳姣�2涓竴缁勬坊鍔燦ormalCell
+        int normalCellCount = newCellCount - 1;
+        for (int i = 0; i < normalCellCount; i++)
+        {
+            scroller.AddCell(ScrollerDataType.Normal, i + 1);
+        }
+
+        scroller.Restart();
+        TryRestorePendingScrollPosition();
+    }
+
+    private void TryRestorePendingScrollPosition()
+    {
+        if (!s_HasPendingScrollPosition || scroller == null || scroller.m_Scorller == null)
+            return;
+
+        scroller.m_Scorller.ScrollPosition = s_PendingScrollPosition;
+        s_HasPendingScrollPosition = false;
+    }
+
+    private int RefreshBattleScrollerData()
     {
         // 鏍规嵁褰撳墠Tab璁剧疆宸辨柟/鏁屾柟
         switch (functionOrder)
@@ -286,21 +339,8 @@
             m_RemainingDefenders.Add(m_SortedDefenders[i]);
         }
 
-        // 閲嶆柊鏋勫缓Scroller
-        scroller.Refresh();
-
-        // 娣诲姞HeaderCell锛堢涓�鏉★級
-        scroller.AddCell(ScrollerDataType.Header, 0);
-
-        // 鍓╀綑鎴愬憳姣�2涓竴缁勬坊鍔燦ormalCell
-        int remainingCount = m_RemainingDefenders.Count;
-        int normalCellCount = Mathf.CeilToInt((float)remainingCount / 2);
-        for (int i = 0; i < normalCellCount; i++)
-        {
-            scroller.AddCell(ScrollerDataType.Normal, i + 1);
-        }
-
-        scroller.Restart();
+        int normalCellCount = Mathf.CeilToInt((float)m_RemainingDefenders.Count / 2);
+        return normalCellCount + 1;
     }
 
     /// <summary>

--
Gitblit v1.8.0