using System; using UnityEngine; public class BoneFieldTabHandler : BaseChallengeTabHandler { protected override int GetIndex() => 2; protected override int GetOpenState() => 0; // 0=FuncID protected override int GetFuncId() => BoneFieldManager.Instance.funcId; protected override int GetRedpointId() => MainRedDot.BoneFieldRepoint; protected override string GetCountInfo() { if (BoneFieldManager.Instance.TryGetShowSweepCount(out int _, out int showrealRemainSweepCount)) { return UIHelper.AppendColor(showrealRemainSweepCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge01", showrealRemainSweepCount)); } return string.Empty; // 获取失败时返回空 } protected override Action GetOnClickAction() { return HandleBoneFieldNavigation; } private void HandleBoneFieldNavigation() { if (!FuncOpen.Instance.IsFuncOpen(GetFuncId(), true)) return; BattleField battleField = BattleManager.Instance.GetBattleFieldByMapID(30010); if (battleField != null) { BoneFieldBattleWin battleWin; if (!UIManager.Instance.IsOpened()) { battleWin = UIManager.Instance.OpenWindow(); } else { battleWin = UIManager.Instance.GetUI(); } battleWin.SetBattleField(battleField as BoneBattleField); } else { UIManager.Instance.OpenWindow(); } } protected override void SubscribeToSpecificEvents() { DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChange; AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdate; } protected override void UnsubscribeFromSpecificEvents() { DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChange; AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdate; } private void OnUpdateFBInfoChange(int mapID, bool isADAddCntChange, bool isBuyAddCntChange, bool isItemAddCntChange) { if (mapID == BoneFieldManager.Instance.DataMapID) { Refresh(); } } private void OnAdsInfoListUpdate(int adID, int mapID) { if (mapID == BoneFieldManager.Instance.DataMapID) { Refresh(); } } }