using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.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; Queue battleHints = new Queue(); 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 (!(StageManager.Instance.CurrentStage is DungeonStage) || StageManager.Instance.isLoading) { return; } if (msg.Equals("AncientBattlefield_8")) { //Receive(2); } } public void Receive(int ancientType) { //battleHints.Enqueue(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 || !(StageManager.Instance.CurrentStage is DungeonStage) || StageManager.Instance.isLoading) { 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.Dequeue(); 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(); } } }