From 1cce54ef352f4a7033e25208989a8e96e398c205 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 10 六月 2026 18:15:51 +0800
Subject: [PATCH] 588 公会攻防战  累计活跃度显示改为 下一次备战日前x天之和

---
 Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs |   56 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
index f61d1a1..22ed9bc 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
@@ -733,18 +733,60 @@
     }
 
     /// <summary>
-    /// 鑾峰彇褰撳墠鎴戠殑鍔熻兘绱娲昏穬搴�
-    /// 缁熻浠庡綋澶╁紑濮嬪線鍓� prepareDayBefore 澶╃殑绱娲昏穬璐$尞涔嬪拰
+    /// 鑾峰彇鐣岄潰灞曠ず鐢ㄧ殑鍏細鏀婚槻鎴樻椿璺冨�笺��
+    /// 鍙e緞锛氭樉绀轰笅涓�娆″鎴樺悕鍗曠敓鎴愭墍浣跨敤鐨� prepareDayBefore 澶╃獥鍙c��
+    /// 鍚庣浼氬湪杩涘叆澶囨垬鏈� 0 鐐瑰垽瀹氬弬鎴樻潯浠讹紝缁熻澶囨垬鏃ュ墠 prepareDayBefore 澶┿��
+    /// 鍓嶇鎸� cycleConfig[1] 鎵句笅涓�娆″鎴樻棩锛屽啀鍊掓帹 prepareDayBefore 澶╋紱绐楀彛涓皻鏈彂鐢熺殑鏈潵鏃ユ湡鎸� 0 澶勭悊锛�
+    /// 閬垮厤 activityData 鍙湁鏄熸湡 key 鏃惰璇诲埌涓婁竴杞悓鏄熸湡鐨勬棫娲昏穬銆�
     /// </summary>
     public long GetMyActivityLevel()
     {
-        int currentWeekday = TimeUtility.GetCommonWeekday(GetZoneID());
+        int daysUntilPrepare = GetDaysUntilNextPrepareStart();
+        return GetActivityLevelBeforePrepare(daysUntilPrepare);
+    }
 
-        long total = 0;
-        for (int i = 0; i < prepareDayBefore; i++)
+    /// <summary>
+    /// 鑾峰彇璺濈涓嬩竴娆″鎴樻湡寮�濮嬭繕鏈夊嚑澶┿��
+    /// 鍙粠 cycleConfig[1] 璇诲彇澶囨垬鏈熼厤缃紝鏀寔绛栧垝鑷敱閰嶇疆澶囨垬鏄熸湡銆�
+    /// 濡傛灉浠婂ぉ灏辨槸澶囨垬鏃ワ紝涔熷彇涓嬩竴娆″鎴樻棩锛岄伩鍏嶆妸宸茶繘鍏ュ鎴樻湡鍚庣殑娲昏穬绠楀叆褰撳墠鍚嶅崟鍙e緞銆�
+    /// </summary>
+    private int GetDaysUntilNextPrepareStart()
+    {
+        int currentWeekday = TimeUtility.GetCommonWeekday(GetZoneID());
+        int[] prepareWeekdays = cycleConfig != null && cycleConfig.Length > 1 ? cycleConfig[1] : null;
+        if (prepareWeekdays.IsNullOrEmpty())
+            return 1;
+
+        int minDaysUntilPrepare = 7;
+        foreach (int prepareWeekday in prepareWeekdays)
         {
-            // (currentWeekday - i) 杞垚 1-7 鑼冨洿
-            int targetWeekday = ((currentWeekday - i - 1 + 7) % 7) + 1;
+            int daysUntilPrepare = prepareWeekday > currentWeekday
+                ? prepareWeekday - currentWeekday
+                : prepareWeekday + 7 - currentWeekday;
+
+            if (daysUntilPrepare < minDaysUntilPrepare)
+                minDaysUntilPrepare = daysUntilPrepare;
+        }
+
+        return minDaysUntilPrepare;
+    }
+
+    /// <summary>
+    /// 缁熻涓嬩竴娆″鎴樻棩鍓� prepareDayBefore 澶╃殑娲昏穬鍊笺��
+    /// offsetFromPrepare 琛ㄧず鐩爣鏃ユ湡璺濈澶囨垬寮�濮嬭繕鏈夊嚑澶╋細1=澶囨垬鍓嶄竴澶╋紝prepareDayBefore=绐楀彛鏈�鏃╀竴澶┿��
+    /// dayOffsetFromToday 澶т簬 0 琛ㄧず鐩爣鏃ユ湡鍦ㄤ粖澶╀箣鍚庯紝鏈潵娲昏穬鎸� 0锛屼笉璇诲彇 activityData銆�
+    /// </summary>
+    private long GetActivityLevelBeforePrepare(int daysUntilPrepare)
+    {
+        long total = 0;
+        int currentWeekday = TimeUtility.GetCommonWeekday(GetZoneID());
+        for (int offsetFromPrepare = prepareDayBefore; offsetFromPrepare >= 1; offsetFromPrepare--)
+        {
+            int dayOffsetFromToday = daysUntilPrepare - offsetFromPrepare;
+            if (dayOffsetFromToday > 0)
+                continue;
+
+            int targetWeekday = ((currentWeekday + dayOffsetFromToday - 1 + 7) % 7) + 1;
 
             if (activityData.TryGetValue(targetWeekday, out long contribution))
                 total += contribution;

--
Gitblit v1.8.0