yyl
2025-10-22 b1f98c42a6b859b35c26e0722efb38a6e9c215be
Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -4,7 +4,8 @@
public class ChallengeTabWin : UIBase
{
    [SerializeField] ChallengeTabButton btnBoneField;
    public static Action OnCloseChallengeTabWin;
    [SerializeField] ChallengeTabButton btnArena;
    protected override void InitComponent()
    {
        base.InitComponent();
@@ -16,10 +17,19 @@
        AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        Display();
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
        DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
        AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn();
    }
    private void OnDayEvent()
    {
        Display();
@@ -38,26 +48,67 @@
        }
    }
    public void OnFuncStateChangeEvent(int funcId)
    {
        if (funcId == BoneFieldManager.Instance.funcId)
        {
            DisplayBoneFieldButton();
        }
        else if (funcId == ArenaManager.Instance.funcId)
        {
            DisplayArenaButton();
        }
    }
    protected override void OnPreClose()
    private void PlayerDataRefresh(PlayerDataType type)
    {
        base.OnPreClose();
        DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
        AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        OnCloseChallengeTabWin?.Invoke();
        if (type == PlayerDataType.ChallengeVoucher)
        {
            DisplayArenaButton();
        }
    }
    public void Display()
    {
        DisplayBoneFieldButton();
        DisplayArenaButton();
    }
    public void DisplayArenaButton()
    {
        int index = 1;
        int funcId = ArenaManager.Instance.funcId;
        int redpointId = MainRedDot.ArenaRepoint;
        bool isLock = FuncOpen.Instance.IsFuncOpen(funcId);
        int type = ArenaManager.Instance.ChallengeMoneyType;
        long nowCount = UIHelper.GetMoneyCnt(type);
        string countInfo = UIHelper.AppendColor(nowCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge03", nowCount));
        string lockInfo = !isLock ? Language.Get("Challenge02") : string.Empty;
        btnArena.Display(index, redpointId, isLock, countInfo, lockInfo, () =>
        {
            UIManager.Instance.CloseWindow<ChallengeTabWin>();
            if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
                return;
            BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3);
            if (arenaBattle != null)
            {
                ArenaBattleWin battleWin;
                if (!UIManager.Instance.IsOpened<ArenaBattleWin>())
                {
                    battleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
                }
                else
                {
                    battleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
                }
                battleWin.SetBattleField(arenaBattle);
            }
            else
            {
                UIManager.Instance.OpenWindow<ArenaWin>();
            }
        });
    }
    public void DisplayBoneFieldButton()