| | |
| | | |
| | | public class ChallengeTabWin : UIBase |
| | | { |
| | | [SerializeField] ChallengeTabButton btnBoneField; |
| | | [SerializeField] ChallengeTabButton btnArena; |
| | | 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; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | foreach (var handler in tabHandlers) |
| | | { |
| | | handler.SubscribeEvents(); |
| | | } |
| | | 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; |
| | | foreach (var handler in tabHandlers) |
| | | { |
| | | handler.UnsubscribeEvents(); |
| | | } |
| | | UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn(); |
| | | } |
| | | 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, () => |
| | | { |
| | | 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() |
| | | { |
| | | 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) |
| | | { |
| | | if (!FuncOpen.Instance.IsFuncOpen(funcId, true)) |
| | | return; |
| | | BattleField battleField = BattleManager.Instance.GetBattleFieldByMapID(30010); |
| | | if (battleField != null) |
| | | { |
| | | BoneFieldBattleWin battleWin; |
| | | if (!UIManager.Instance.IsOpened<BoneFieldBattleWin>()) |
| | | { |
| | | battleWin = UIManager.Instance.OpenWindow<BoneFieldBattleWin>(); |
| | | } |
| | | else |
| | | { |
| | | battleWin = UIManager.Instance.GetUI<BoneFieldBattleWin>(); |
| | | } |
| | | battleWin.SetBattleField(battleField as BoneBattleField); |
| | | } |
| | | else |
| | | { |
| | | UIManager.Instance.OpenWindow<BoneFieldWin>(); |
| | | } |
| | | }); |
| | | handler.Refresh(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |