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