lcy
2026-01-22 ceabc7dde8514ed6bcfadfb5fe9fb37c45cc370e
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)