using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public class BattleHint : Singleton { DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } public BattleHint() { SysNotifyMgr.Instance.OnSystemNotifyEvent += OnSystemNotifyEvent; } public void OnStageLoadFinish() { Clear(); var mapId = PlayerDatas.Instance.baseData.MapID; if (cacheMapId != 0 && cacheMapId != 31160 && mapId == 31160) { SnxxzGame.Instance.StartCoroutine(Co_LoadFinish()); } var help = dungeonModel.mission; ancientKing = mapId != 31160 ? 0 : help.topPlayerID; cacheMapId = PlayerDatas.Instance.baseData.MapID; } public event Action battleHintUpdate; public event Action evenKillUpdate; List battleHints = new List(); Queue evenKills = new Queue(); int ancientKing = 0; int cacheMapId = 0; IEnumerator Co_LoadFinish() { yield return WaitingForSecondConst.WaitMS300; var mapId = PlayerDatas.Instance.baseData.MapID; if (mapId == 31160) { Receive(3); } } public void UpdateDungeonHelp() { var help = dungeonModel.mission; if (DTC0403_tagPlayerLoginLoadOK.finishedLogin) { if (PlayerDatas.Instance.baseData.MapID == 31160 && help.topPlayerID == PlayerDatas.Instance.baseData.PlayerID && ancientKing != help.topPlayerID) { ancientKing = help.topPlayerID; Receive(1); } } ancientKing = help.topPlayerID; } private void OnSystemNotifyEvent(string msg) { if (!(StageLoad.Instance.currentStage is DungeonStage) || StageLoad.Instance.isLoading) { return; } if (msg.Equals("AncientBattlefield_8")) { Receive(2); } } public void Receive(int ancientType) { if (battleHints.Contains(ancientType) || WindowCenter.Instance.IsOpen() || WindowCenter.Instance.IsOpen()) { return; } battleHints.Add(ancientType); if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } else { if (battleHintUpdate != null) { battleHintUpdate(); } } } public void ReceiveEvenKill(string message, ArrayList list) { if (PlayerDatas.Instance.baseData.MapID != 31160 || !(StageLoad.Instance.currentStage is DungeonStage) || StageLoad.Instance.isLoading || WindowCenter.Instance.IsOpen() || WindowCenter.Instance.IsOpen()) { return; } var evenKillCount = 0; if (list != null && list.Count > 0) { int.TryParse(list[0].ToString(), out evenKillCount); } if (evenKillCount == 0) { return; } message = message.Replace("%s0", evenKillCount.ToString()); evenKills.Enqueue(message); if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } else { if (evenKillUpdate != null) { evenKillUpdate(); } } } public bool TryGetBattleHint(out int ancientType) { ancientType = 0; if (battleHints.Count > 0) { ancientType = battleHints[0]; battleHints.RemoveAt(0); return true; } return false; } public bool TryGetEvenKill(out string message) { message = string.Empty; if (evenKills.Count > 0) { message = evenKills.Dequeue(); return true; } return false; } public void Clear() { battleHints.Clear(); evenKills.Clear(); } } }