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