From 38136a34de9aa36bf15ec7471abd56e2cba6c26f Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Tue, 27 Oct 2020 17:39:17 +0800
Subject: [PATCH] 修改无尽模式新手引导流程能全部跑通了

---
 Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs |   83 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 77 insertions(+), 6 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
index bf010e3..cff3ab6 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -156,6 +156,13 @@
         private bool isBuffSelectCompleted = true;
 
         /// <summary>
+        /// 新手第一关是否完成
+        /// </summary>
+        private bool isFirstLevelCompleted = false;
+
+        private bool isStopSecondWaveCompleted = false;
+
+        /// <summary>
         /// 切换基地
         /// </summary>
         /// <param name="index">列索引</param>
@@ -306,8 +313,19 @@
             // 本关卡所有波次全部生成完成 && 敌人全部被清理了,然后就去尝试进入下一关
             if (EndlessLeveltate == LevelState.SpawningEnemies && IsAllWaveCompleted && NumberOfEnemies == 0)
             {
-                if (!UpdateLevel())
-                    ChangeLevelState(LevelState.AllEnemiesSpawned);
+                // 新手的话,第一关完了暂停
+                if (!GameConfig.IsNewbie || GameConfig.IsNewbieGuideCompleted)
+                {
+                    if (!UpdateLevel())
+                        ChangeLevelState(LevelState.AllEnemiesSpawned);
+                }
+                else if (!isFirstLevelCompleted)
+                {
+                    isFirstLevelCompleted = true;
+                    EndlessUIStart.instance.Pause();
+                    // 第一关的怪全部被杀光
+                    EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillDone);
+                }
             }
         }
 
@@ -344,9 +362,6 @@
             ++CurrentLevel;
             IsAllWaveCompleted = false;
 
-            // 进入boss虚弱状态
-            Debug.Log("--------------------- 进入boss虚弱状态 ---------------------");
-
             // 所有关卡全部结束
             if (CurrentLevel > EndlessPortData.MaxLevel)
                 return false;
@@ -354,6 +369,17 @@
             StartCoroutine(DelayToNextLevel());
 
             return true;
+        }
+
+        /// <summary>
+        /// 新手更新关卡
+        /// </summary>
+        public void NewbieUpdateLevel()
+        {
+            ++CurrentLevel;
+            IsAllWaveCompleted = false;
+            EndlessUIStart.instance.Restart();
+            WaveManager.StartWaves(CurrentLevel);
         }
 
         /// <summary>
@@ -371,7 +397,15 @@
         /// </summary>
         private void BeginLevel()
         {
-            ShowSelectBuffUI();
+            if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return;
+
+            if (!GameConfig.IsNewbie)
+                ShowSelectBuffUI();
+            else
+            {
+                EndlessUIStart.instance.Restart();
+                WaveManager.StartWaves(CurrentLevel);
+            }
         }
 
         /// <summary>
@@ -463,6 +497,7 @@
         /// </summary>
         protected virtual void SafelyCallLevelCompleted()
         {
+            EndlessDropManager.instance.PickUpAllDrop();
             if (LevelCompleted != null)
                 LevelCompleted();
         }
@@ -495,5 +530,41 @@
                 --WaveManager.TotalWaveLines;
             }
         }
+
+        /// <summary>
+        /// 暂停波次,小怪停止移动,塔停止攻击
+        /// </summary>
+        public void PauseWave()
+        {
+            EndlessUIStart.instance.Pause();
+            AgentInsManager.instance.SetWaveLineCanMove(-1, false, false);
+            WaveManager.PauseAllWave();
+            EndlessGameUI.instance.SetAttackingTowerState(false);
+        }
+
+        /// <summary>
+        /// 恢复波次,小怪
+        /// </summary>
+        public void RestartWave()
+        {
+            EndlessUIStart.instance.Restart();
+            AgentInsManager.instance.SetWaveLineCanMove(-1, true, false);
+            WaveManager.RestartAllWave();
+            EndlessGameUI.instance.SetAttackingTowerState(true);
+        }
+
+        /// <summary>
+        /// 停止第二关波次
+        /// </summary>
+        public void StopSecondWave()
+        {
+            Debug.LogError("--------------------- 停止第二关出怪 ---------------------");
+            if (!isStopSecondWaveCompleted)
+            {
+                isStopSecondWaveCompleted = true;
+                PauseWave();
+            }
+            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillStep);
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1