1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System;
using UnityEngine;
 
public class ChallengeTabWin : UIBase
{
    [SerializeField] ChallengeTabButton btnBoneField;
    [SerializeField] ChallengeTabButton btnArena;
    public static Action OnCloseChallengeTabWin;
    protected override void InitComponent()
    {
        base.InitComponent();
    }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
        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;
        OnCloseChallengeTabWin?.Invoke();
    }
    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)
        {
            DisplayBoneFieldButton();
        }
 
    }
 
    public void OnFuncStateChangeEvent(int funcId)
    {
        if (funcId == BoneFieldManager.Instance.funcId)
        {
            DisplayBoneFieldButton();
        }
        else if (funcId == ArenaManager.Instance.funcId)
        {
            DisplayArenaButton();
        }
    }
 
    private void PlayerDataRefresh(PlayerDataType type)
    {
        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 fsBattleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
                if (null == fsBattleWin)
                {
                    fsBattleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
                }
                fsBattleWin.SetBattleField(arenaBattle);
            }
            else
            {
                UIManager.Instance.OpenWindow<ArenaWin>();
            }
        });
    }
 
    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))
            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, () =>
        {
            UIManager.Instance.CloseWindow<ChallengeTabWin>();
            if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
                return;
            UIManager.Instance.OpenWindow<BoneFieldWin>();
        });
    }
 
}