From ceabc7dde8514ed6bcfadfb5fe9fb37c45cc370e Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 22 一月 2026 20:43:06 +0800
Subject: [PATCH] 136 白骨盈野-客户端 重构红点逻辑
---
Main/System/BoneField/BoneFieldManager.cs | 75 ++++++++++++++++++++++++++++---------
1 files changed, 56 insertions(+), 19 deletions(-)
diff --git a/Main/System/BoneField/BoneFieldManager.cs b/Main/System/BoneField/BoneFieldManager.cs
index e915b7b..bfc1f3a 100644
--- a/Main/System/BoneField/BoneFieldManager.cs
+++ b/Main/System/BoneField/BoneFieldManager.cs
@@ -5,13 +5,13 @@
public readonly int DataMapID = 30010; // 鐧介鐩堥噹(鎴橀敜绉樺)
public readonly int MinStartLineID = 1; // funcLineID浠�1寮�濮�
- public readonly int funcId = 9; //鍔熻兘ID
public Redpoint parentRedpoint = new Redpoint(MainRedDot.MainChallengeRedpoint, MainRedDot.BoneFieldRepoint);
public override void Init()
{
DungeonManager.Instance.UpdateFBInfoListEvent += OnUpdateFBInfoChangeEvent;
AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+ PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
TimeMgr.Instance.OnDayEvent += OnDayEvent;
}
@@ -20,12 +20,13 @@
DungeonManager.Instance.UpdateFBInfoListEvent -= OnUpdateFBInfoChangeEvent;
AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+ PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
TimeMgr.Instance.OnDayEvent -= OnDayEvent;
}
private void OnFuncStateChangeEvent(int obj)
{
- if (obj != funcId)
+ if (obj != (int)FuncOpenEnum.BoneBattle)
return;
UpdateRedPoint();
}
@@ -51,39 +52,75 @@
UpdateRedPoint();
}
+ private void OnPlayerDataRefresh(PlayerDataType type)
+ {
+ if (type == PlayerDataType.FightPower)
+ {
+ UpdateRedPoint();
+ }
+ else if (type == PlayerDataType.LV)
+ {
+ UpdateRedPoint();
+ }
+ }
+
public void UpdateRedPoint()
{
parentRedpoint.state = RedPointState.None;
- if (!FuncOpen.Instance.IsFuncOpen(funcId))
+ if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BoneBattle))
return;
+
+ bool isShowChallengeRed = IsShowChallengeRed();
+ if (isShowChallengeRed)
+ {
+ parentRedpoint.state = RedPointState.Simple;
+ return;
+ }
+
+ bool isShowSweepRed = IsShowSweepRed();
+ if (isShowSweepRed)
+ {
+ parentRedpoint.state = RedPointState.Simple;
+ return;
+ }
+
+ }
+ public bool IsShowChallengeRed()
+ {
if (!DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo))
- return;
+ return false;
bool isHasNextLineID = IsHasNextLineID(fbInfo);
int nowPassLineID = GetNowPassLineID(fbInfo);
DungeonConfig.TryGetDungeonID(DataMapID, nowPassLineID, out int dungeonID);
if (!DungeonConfig.HasKey(dungeonID))
- return;
+ return false;
DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
bool isLvOk = PlayerDatas.Instance.baseData.LV >= dungeonConfig.LVLimitMin;
long myFightPower = PlayerDatas.Instance.baseData.FightPower;
- if (myFightPower >= dungeonConfig.FightPower)
+ return isLvOk && isHasNextLineID && myFightPower >= dungeonConfig.FightPower;
+ }
+
+ public bool IsShowSweepRed()
+ {
+ bool isNoChallenge = IsNoChallenge();
+ if (isNoChallenge)
+ return false;
+ if (TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
{
- if (isLvOk && isHasNextLineID)
+ bool isSweepCountOk = showrealRemainSweepCount > 0;
+ if (isSweepCountOk)
{
- parentRedpoint.state = RedPointState.Simple;
+ return true;
}
}
- else
- {
- if (TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
- {
- bool isSweepCountOk = showrealRemainSweepCount > 0;
- if (isSweepCountOk)
- {
- parentRedpoint.state = RedPointState.Simple;
- }
- }
- }
+ return false;
+ }
+
+ public bool IsNoChallenge()
+ {
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo))
+ return true;
+ return fbInfo.PassLineID <= 0;
}
public bool IsHasNextLineID(FBInfo fBInfo)
--
Gitblit v1.8.0