From c591cb6e215ea5e762560afdae059f1d4fd7f4ec Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期五, 28 九月 2018 16:32:37 +0800
Subject: [PATCH] Merge branch 'master' into 3687天赋功能

---
 System/Message/BattleHint.cs |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 102 insertions(+), 11 deletions(-)

diff --git a/System/Message/BattleHint.cs b/System/Message/BattleHint.cs
index f61b04d..17183b1 100644
--- a/System/Message/BattleHint.cs
+++ b/System/Message/BattleHint.cs
@@ -6,31 +6,78 @@
 {
     public class BattleHint : Singleton<BattleHint>
     {
+        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+
         public BattleHint()
         {
-            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
+            SysNotifyMgr.Instance.OnSystemNotifyEvent += OnSystemNotifyEvent;
         }
 
-        private void OnStageLoadFinish()
+        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<string> battleHints = new Queue<string>();
+        Queue<int> battleHints = new Queue<int>();
+        Queue<string> evenKills = new Queue<string>();
 
-        public void Receive(string msg)
+        int ancientKing = 0;
+        int cacheMapId = 0;
+
+        IEnumerator Co_LoadFinish()
         {
-            if (!(StageManager.Instance.CurrentStage is DungeonStage))
+            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;
             }
-            battleHints.Enqueue(msg);
-            if (StageManager.Instance.isLoading)
+            if (msg.Equals("AncientBattlefield_8"))
             {
-                return;
+                Receive(2);
             }
+        }
+
+        public void Receive(int ancientType)
+        {
+            battleHints.Enqueue(ancientType);
             if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
             {
                 WindowCenter.Instance.Open<BattleHintWin>();
@@ -44,12 +91,55 @@
             }
         }
 
-        public bool TryGetBattleHint(out string msg)
+        public void ReceiveEvenKill(string message, ArrayList list)
         {
-            msg = string.Empty;
+            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<BattleHintWin>())
+            {
+                WindowCenter.Instance.Open<BattleHintWin>();
+            }
+            else
+            {
+                if (evenKillUpdate != null)
+                {
+                    evenKillUpdate();
+                }
+            }
+        }
+
+        public bool TryGetBattleHint(out int ancientType)
+        {
+            ancientType = 0;
             if (battleHints.Count > 0)
             {
-                msg = battleHints.Dequeue();
+                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;
@@ -58,6 +148,7 @@
         public void Clear()
         {
             battleHints.Clear();
+            evenKills.Clear();
         }
     }
 }

--
Gitblit v1.8.0