lcy
2026-07-16 34179ffa10e510ba71522cb2bd1fd978b7fcbbe1
Main/System/GuildAtkDefBat/GuildAtkDefBatManager.cs
@@ -49,6 +49,7 @@
    public override void Init()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnReconnect += OnBeforePlayerDataInitializeEventOnReconnect;
        GuildManager.Instance.EnterOrQuitGuildEvent += OnEnterOrQuitGuildEvent;
        StoreModel.Instance.RefreshBuyShopLimitEvent += OnRefreshShopLimit;
        ParseConfig();
@@ -57,18 +58,25 @@
    public override void Release()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnReconnect -= OnBeforePlayerDataInitializeEventOnReconnect;
        GuildManager.Instance.EnterOrQuitGuildEvent -= OnEnterOrQuitGuildEvent;
        StoreModel.Instance.RefreshBuyShopLimitEvent -= OnRefreshShopLimit;
    }
    private void OnBeforePlayerDataInitializeEventOnReconnect()
    {
        atkDefBatLogs.Clear();
    }
    private void OnBeforePlayerDataInitializeEventOnRelogin()
    {
        hasClosedMainGuildAtkDefBatTip = false;
        ResetBattleData();
    }
    private void OnRefreshShopLimit()
    {
        UpdateRedpoint();
    }
    private void OnBeforePlayerDataInitializeEventOnRelogin()
    {
        ResetBattleData();
    }
    private void OnEnterOrQuitGuildEvent(bool isEnter)
@@ -222,7 +230,6 @@
        targetInfo.ServerID = sourceData.ServerID;
        targetInfo.EmblemID = sourceData.EmblemID;
        targetInfo.EmblemWord = UIHelper.ServerStringTrim(sourceData.EmblemWord);
        targetInfo.IsDismiss = sourceData.IsDismiss;
        targetInfo.TotalStar = sourceData.TotalStar;
        targetInfo.OverState = sourceData.OverState;
        targetInfo.BatMemCount = sourceData.BatMemCount;
@@ -390,6 +397,22 @@
        return MyFamilyMembers.ContainsKey(PlayerDatas.Instance.PlayerId);
    }
    private bool hasClosedMainGuildAtkDefBatTip;
    public bool ShouldShowMainGuildAtkDefBatTip()
    {
        if (hasClosedMainGuildAtkDefBatTip)
            return false;
        if (!IsOpen())
            return false;
        return BatState == 3 && HasFamilyJoinEligibility() && HasMyJoinEligibility();
    }
    public void ClearMainGuildAtkDefBatTip()
    {
        hasClosedMainGuildAtkDefBatTip = true;
    }
    /// <summary>
    /// 获取攻防战的当前显示状态标识
    /// </summary>
@@ -406,8 +429,8 @@
        if (BatState == 1 && MyFamilyInfo != null)
        {
            int overState = MyFamilyInfo.OverState;
            if (overState == 1 || overState == 3) return 4;
            if (overState == 2 || overState == 4) return 5;
            if (overState == 1) return 4;
            if (overState == 2) return 5;
        }
        return 1;
@@ -428,7 +451,7 @@
    /// <summary>
    /// 获取己方公会排序后的参战成员列表
    /// 排序规则:Star降序 → BatCnt升序 → PlayerID升序
    /// 过滤未战斗成员,排序规则:Star降序 → BatCnt升序 → PlayerID升序
    /// </summary>
    public List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> GetSortedFamilyMembers()
    {
@@ -436,7 +459,7 @@
        if (members == null || members.Count <= 0)
            return new List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem>();
        var list = members.Values.ToList();
        var list = members.Values.Where(member => member.BatCnt > 0).ToList();
        list.Sort((a, b) =>
        {
            if (b.Star != a.Star)
@@ -866,8 +889,7 @@
    /// <summary>
    /// 获取我的剩余开启次数
    /// 仅在休战期(BatState==1)可开启
    /// 对手公会未解散: 有参与战斗(BatCnt>0)的玩家可开启1次
    /// 对手公会已解散: 所有参赛成员均可开启1次
    /// 参战且已战斗成员可开启1次
    /// 每人最多1次
    /// </summary>
    public int GetMyOpenRemainCount()
@@ -883,15 +905,15 @@
        if (!MyFamilyMembers.TryGetValue(myPlayerId, out var myMem))
            return 0;
        // 未参与战斗不能开启
        if (myMem.BatCnt <= 0)
            return 0;
        // 已开启过则不能再次开启
        if (myMem.GridNum > 0)
            return 0;
        // 对手公会已解散: 所有参赛成员均可开启
        if (EnemyFamilyInfo != null && EnemyFamilyInfo.IsDismiss == 1)
            return 1;
        // 对手公会未解散: 参战成员均可开启1次(已开启的被 GridNum 过滤)
        // 参战且已战斗成员可开启1次(已开启的被 GridNum 过滤)
        return 1;
    }