From e33d0e85cf5d01e953d95197488eeffc67835f3a Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Tue, 27 Oct 2020 18:16:53 +0800
Subject: [PATCH] 无尽模式关卡打点需要

---
 Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
index 6ed6da1..9f3d26f 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
@@ -74,6 +74,12 @@
         public int TotalEnemies { get; protected set; }
 
         /// <summary>
+        /// 所有兵线已经生成的敌人总数量
+        /// </summary>
+        /// <value></value>
+        public int SpawnedTotalEnemies { get; protected set; }
+
+        /// <summary>
         /// 本波次剩余敌人数量
         /// </summary>
         public int RemainEnemies { get; protected set; }
@@ -164,7 +170,7 @@
 
         private void RefreshBoss()
         {
-            if (CurrentWaveIndex > 0)
+            if (CurrentWaveIndex > 0 || TotalWaves == 1)
                 EndlessBossHPManager.instance.SwitchHP(CurrentWaveIndex == TotalWaves - 1);
             EndlessBossHPManager.instance.SetBossInfo($"{waveData[0].Config.boss_name}  Lv.{Level}");
             EndlessBossHPManager.instance.UpdateWave(TotalWaves - CurrentWaveIndex);
@@ -184,7 +190,7 @@
             WaveInterval = waveData[0].Config.cooldown / 1000f;
             TotalWaveLines = waveData.Count;
             CompletedWaveLine = 0;
-
+            SpawnedTotalEnemies = 0;
             HideTunel();
 
             // 刷新法阵的显示
@@ -216,13 +222,54 @@
                     continue;
                 }
 
-                waves[data.Config.tunel - 1].WaveCompleted -= OneWaveCompleted;
-                waves[data.Config.tunel - 1].WaveCompleted += OneWaveCompleted;
+                int tunelIndex = data.Config.tunel - 1;
+                waves[tunelIndex].WaveCompleted -= OneWaveCompleted;
+                waves[tunelIndex].WaveCompleted += OneWaveCompleted;
+                waves[tunelIndex].SpawnNewAgent -= SpawnNewAgent;
+                waves[tunelIndex].SpawnNewAgent += SpawnNewAgent;
                 waves[data.Config.tunel - 1].StartWave(data);
             }
 
             if (TotalWaveLines != 0)
                 isWaveStarted = true;
+        }
+
+        /// <summary>
+        /// 有新的敌人生成
+        /// </summary>
+        private void SpawnNewAgent()
+        {
+            ++SpawnedTotalEnemies;
+
+            if (GameConfig.IsNewbie && EndlessUIStart.instance.beginSkillStep && SpawnedTotalEnemies >= 8)
+            {
+                EndlessUIStart.instance.beginSkillStep = false;
+                EndlessLevelManager.instance.StopSecondWave();
+            }
+        }
+
+        /// <summary>
+        /// 暂停所有兵线出兵
+        /// </summary>
+        public void PauseAllWave()
+        {
+            foreach (EndlessPortConfig data in waveData)
+            {
+                if (waves[data.Config.tunel - 1].LineState == EndlessWaveLineState.Spawning)
+                    waves[data.Config.tunel - 1].PauseWave();
+            }
+        }
+
+        /// <summary>
+        /// 恢复所有兵线出兵
+        /// </summary>
+        public void RestartAllWave()
+        {
+            foreach (EndlessPortConfig data in waveData)
+            {
+                if (waves[data.Config.tunel - 1].LineState == EndlessWaveLineState.Spawning)
+                    waves[data.Config.tunel - 1].RestartWave();
+            }
         }
 
         /// <summary>
@@ -252,6 +299,7 @@
                 // 更新波索引
                 ++CurrentWaveIndex;
                 EndlessBuffManager.instance.UpdateBuffList();
+                EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessCompletedPort, Level, CurrentWaveIndex);
 
                 if (CurrentWaveIndex >= TotalWaves)
                     // 当前关卡的所有波次全部完成

--
Gitblit v1.9.1