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(); if (!FuncOpen.Instance.IsFuncOpen(funcId, true)) return; BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3); if (arenaBattle != null) { ArenaBattleWin fsBattleWin = UIManager.Instance.GetUI(); if (null == fsBattleWin) { fsBattleWin = UIManager.Instance.OpenWindow(); } fsBattleWin.SetBattleField(arenaBattle); } else { UIManager.Instance.OpenWindow(); } }); } 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(); if (!FuncOpen.Instance.IsFuncOpen(funcId, true)) return; UIManager.Instance.OpenWindow(); }); } }