hch
5 小时以前 2f844a7b0d694685557560e721eabd66ff830b7a
Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -3,80 +3,42 @@
public class ChallengeTabWin : UIBase
{
    [SerializeField] ChallengeTabButton btnBoneField;
    public static Action OnCloseChallengeTabWin;
    private BaseChallengeTabHandler[] tabHandlers;
    protected override void InitComponent()
    {
        base.InitComponent();
        // 自动查找所有子对象上的 Handler 组件
        tabHandlers = GetComponentsInChildren<BaseChallengeTabHandler>(true);
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
        AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        Display();
    }
    private void OnDayEvent()
    {
        Display();
    }
    private void OnAdsInfoListUpdateEvent(int id, int mapId)
    {
        Display();
    }
    private void OnUpdateFBInfoChangeEvent(int arg1, bool arg2, bool arg3, bool arg4)
    {
        if (arg1 == BoneFieldManager.Instance.DataMapID)
        foreach (var handler in tabHandlers)
        {
            DisplayBoneFieldButton();
            handler.SubscribeEvents();
        }
    }
    public void OnFuncStateChangeEvent(int funcId)
    {
        if (funcId == BoneFieldManager.Instance.funcId)
        {
            DisplayBoneFieldButton();
        }
        Display();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
        DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
        AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        OnCloseChallengeTabWin?.Invoke();
        foreach (var handler in tabHandlers)
        {
            handler.UnsubscribeEvents();
        }
        UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn();
    }
    public void Display()
    {
        DisplayBoneFieldButton();
    }
    public void DisplayBoneFieldButton()
    {
        int index = 2;
        int funcId = BoneFieldManager.Instance.funcId;
        int redpointId = MainRedDot.BoneFieldRepoint;
        bool isLock = FuncOpen.Instance.IsFuncOpen(funcId);
        if (!BoneFieldManager.Instance.TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
        if (tabHandlers == null)
            return;
        string countInfo = UIHelper.AppendColor(showrealRemainSweepCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge01", showrealRemainSweepCount));
        string lockInfo = !isLock ? Language.Get("Challenge02") : string.Empty;
        btnBoneField.Display(index, redpointId, isLock, countInfo, lockInfo, () =>
        foreach (var handler in tabHandlers)
        {
            UIManager.Instance.CloseWindow<ChallengeTabWin>();
            if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
                return;
            UIManager.Instance.OpenWindow<BoneFieldWin>();
        });
            handler.Refresh();
        }
    }
}
}