From 4e5820f0f8aab02b990a4edfd2477749a9f07eba Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期五, 12 六月 2026 16:33:25 +0800
Subject: [PATCH] 588 公会攻防战 战场滚动条记录上次挑战者的位置
---
Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs | 69 ++++++++++++++++++++++++++--------
1 files changed, 52 insertions(+), 17 deletions(-)
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
index 17b5ac2..3a72a4c 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
@@ -40,6 +40,8 @@
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()
{
@@ -133,7 +135,7 @@
{
OnDayRefresh();
Display();
- RefreshBattleScroller();
+ RefreshBattleScroller(true);
}
private void OnDayRefresh()
@@ -257,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)
@@ -291,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