From 841b66ef416a727a0c798ad2263b098247cb4aa7 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Fri, 27 Nov 2020 12:00:16 +0800
Subject: [PATCH] buff预览暂停

---
 Assets/Scripts/TowerDefense/Level/EndlessWave.cs |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs
index e30e180..7f1add6 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs
@@ -52,11 +52,6 @@
         public event Action SpawnNewAgent;
 
         /// <summary>
-        /// 波次发生改变
-        /// </summary>
-        public event Action WaveChanged;
-
-        /// <summary>
         /// 怪出生开始节点
         /// </summary>
         public Node StartingNode;
@@ -108,19 +103,14 @@
         public void PauseWave()
         {
             PauseTimer(spawnTimer);
-            isWaveStoped = true;
         }
 
         public void RestartWave()
         {
-            StartTimer(spawnTimer);
-            isWaveStoped = false;
+            if (spawnTimer != null)
+                StartTimer(spawnTimer);
         }
 
-        /// <summary>
-        /// Handles spawning the current agent and sets up the next agent for spawning
-        /// 在场景内孵化出来一个Boss,这个核心函数最后被规则性的数据接管
-        /// </summary>
         protected virtual void SpawnCurrent()
         {
             if (isWaveStoped) return;
@@ -134,8 +124,15 @@
             else
             {
                 ++spawnedEnemies;
+
                 if (SpawnNewAgent != null)
                     SpawnNewAgent();
+
+                if (spawnedEnemies >= waveData.Config.amount)
+                {
+                    StopWave();
+                    SafelyBroadcastWaveCompletedEvent();
+                }
             }
         }
 
@@ -145,12 +142,16 @@
         /// <returns>Agent</returns>
         protected virtual void SpawnAgent()
         {
-            int index = GetIndexByResId(waveData.EnemyData.resource);
+            endless_enemy enemyData = waveData.EnemyDataList[waveData.Config.enemy_id > 0 ? 0 : spawnedEnemies];
+
+            int index = GetIndexByResId(enemyData.resource);
+
             // 木属性小怪需要同时生成两个,先这么写吧(WTF)
-            bool isDouble = waveData.EnemyData.resource == 103;
+            bool isDouble = enemyData.resource == 103;
 
             Poolable agentPoolable = Poolable.TryGetPoolable<Poolable>(AgentConfigurationList[index].agentPrefab.gameObject);
             Agent newAgent = agentPoolable.GetComponent<Agent>();
+            newAgent.EnemyData = enemyData;
             newAgent.transform.position = StartingNode.transform.position;
 
             if (isDouble)
@@ -166,9 +167,9 @@
             newAgent.Initialize();
 
             // 最终血量 = 基础血量 * 血量增幅,速度和金币都是一个公式
-            float hp = waveData.Config.b_hp * waveData.EnemyData.hp_rate;
-            float speed = waveData.Config.b_speed * waveData.EnemyData.speed_rate;
-            int gold = waveData.Config.b_coin * waveData.EnemyData.coin_rate;
+            float hp = waveData.Config.b_hp * enemyData.hp_rate;
+            float speed = waveData.Config.b_speed * enemyData.speed_rate;
+            int gold = waveData.Config.b_coin * enemyData.coin_rate;
 
             newAgent.SetAgentData(hp, speed, gold);
             // todo 这里先填1级后面需要修改
@@ -176,11 +177,11 @@
             // 加入Manager统一管理.
             AgentInsManager.instance.addAgent(newAgent);
 
-
             if (isDouble)
             {
                 Poolable agentPoolable2 = Poolable.TryGetPoolable<Poolable>(AgentConfigurationList[index].agentPrefab.gameObject);
                 Agent doubleAgent = agentPoolable2.GetComponent<Agent>();
+                doubleAgent.EnemyData = enemyData;
                 doubleAgent.transform.position = StartingNode.transform.position;
 
                 Vector3 pos = doubleAgent.transform.position;
@@ -229,7 +230,7 @@
         }
 
         /// <summary>
-        /// 暂时先这么处理
+        /// 暂时先这么处理 cx test
         /// </summary>
         /// <param name="resId">endless_enemy表的资源id</param>
         /// <returns>所有可选的agent列表的索引</returns>

--
Gitblit v1.9.1