From 340c905aeb2d12c091eb6a62fa1502d05a0d7c9f Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Fri, 20 Nov 2020 17:36:55 +0800
Subject: [PATCH] 一次性buff重复出现问题

---
 Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs  |    1 -
 Assets/Scripts/Data/EndlessBuffData.cs                   |   19 ++++++++++---------
 Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs |    4 ++++
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/Assets/Scripts/Data/EndlessBuffData.cs b/Assets/Scripts/Data/EndlessBuffData.cs
index 2a2200f..2b54726 100644
--- a/Assets/Scripts/Data/EndlessBuffData.cs
+++ b/Assets/Scripts/Data/EndlessBuffData.cs
@@ -74,6 +74,11 @@
         private static List<EndlessBuffConfig> randomBuffList;
 
         /// <summary>
+        /// 一次性出现的buff id列表
+        /// </summary>
+        private static List<int> removedIdList;
+
+        /// <summary>
         /// 颜色品阶
         /// </summary>
         /// <typeparam name="Color"></typeparam>
@@ -90,6 +95,7 @@
             endlessBuffList = JsonDataCenter.GetList<endless_buff>();
             allEndlessConfig = new List<EndlessBuffConfig>();
             randomBuffList = new List<EndlessBuffConfig>();
+            removedIdList = new List<int>();
             random = new System.Random();
 
             foreach (endless_buff data in endlessBuffList)
@@ -131,6 +137,9 @@
 
             for (int i = 0; i < allEndlessConfig.Count; ++i)
             {
+                // 如果是一次性的buff就不再出现了
+                if (removedIdList.Contains(allEndlessConfig[i].Config.id)) continue;
+
                 if (level >= allEndlessConfig[i].Config.down_level && level <= allEndlessConfig[i].Config.upper_level)
                     endlessBuffPool.Add(allEndlessConfig[i]);
             }
@@ -142,14 +151,7 @@
         /// <param name="id"></param>
         public static void RemoveFromBuffPool(int id)
         {
-            for (int i = 0; i < endlessBuffPool.Count; ++i)
-            {
-                if (endlessBuffPool[i].Config.id == id)
-                {
-                    endlessBuffPool.Remove(endlessBuffPool[i]);
-                    break;
-                }
-            }
+            removedIdList.Add(id);
         }
 
         /// <summary>
@@ -181,7 +183,6 @@
             }
 
             randomBuffList = ret;
-
             return ret;
         }
 
diff --git a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
index e4e27b7..8440073 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -441,6 +441,7 @@
         public void NewbieUpdateLevel()
         {
             ++CurrentLevel;
+            EndlessBuffData.InitEndlessBuffPool(CurrentLevel);
             WaveManager.InitPort(CurrentLevel);
             IsAllWaveCompleted = false;
             EndlessUIStart.instance.Restart();
@@ -464,7 +465,10 @@
         {
             if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return;
 
+            EndlessBuffData.InitEndlessBuffPool(CurrentLevel);
+
             if (CurrentLevel == startLevel)
+
                 WaveManager.InitPort(CurrentLevel);
 
             if (!GameConfig.IsNewbie)
diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
index c07baf8..19235f0 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
@@ -165,7 +165,6 @@
         /// <param name="level"></param>
         public void InitPort(int level)
         {
-            EndlessBuffData.InitEndlessBuffPool(level);
             InitPortData(level);
             InitWaveData();
             RefreshBoss();

--
Gitblit v1.9.1