using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class TeamFailEnterDungeonHandle : Singleton { Dictionary tasks = new Dictionary(); public TeamFailEnterDungeonHandle() { StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish; } private void OnStageLoadFinish() { foreach (var action in tasks.Values) { try { action(); } catch (Exception e) { DebugEx.Log(e.StackTrace); } } tasks.Clear(); } public void ReceiveReason(HB913_tagGCEnterTeamFBFailReason package) { switch (package.MapID) { case 31080: HandleFairyLand(package.AskType, package.Reason); break; } } public void HandleFairyLand(int type, int reason) { if (reason == 6) { HandleFairyLandLackTicket(); } } void HandleFairyLandLackTicket() { var dayRemindKey = TeamDungeonTicketLackWin.GetDayRemindKey(TeamDungeonTicketLackWin.LackType.FairyLand); if (DayRemind.Instance.GetDayRemind(dayRemindKey))//设置了今日不再提醒 { return; } if (NewBieCenter.Instance.inGuiding)//引导中不弹 { return; } if (WindowCenter.Instance.IsOpen() || WindowCenter.Instance.IsOpen()) { return; } if (!(StageLoad.Instance.currentStage is DungeonStage)) { return; } var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = MapConfig.Get(mapId); if (mapConfig == null || mapConfig.MapFBType != (int)MapType.OpenCountry) { return; } if (StageLoad.Instance.isLoading) { if (!tasks.ContainsKey(31080)) { tasks.Add(31080, RecheckFairyLandTicket); } return; } TeamDungeonTicketLackWin.lackType = TeamDungeonTicketLackWin.LackType.FairyLand; WindowCenter.Instance.Open(); } void RecheckFairyLandTicket() { SnxxzGame.Instance.StartCoroutine(Co_Load()); } IEnumerator Co_Load() { yield return WaitingForSecondConst.WaitMS500; HandleFairyLandLackTicket(); } } }