From bc4b4c30a81e1ffa2c6e55dbe1dc7654590d9444 Mon Sep 17 00:00:00 2001 From: Ader Alisma 01 Date: Sat, 2 Mar 2024 16:26:47 -0500 Subject: [PATCH] Fixed spawning decrementation and changing spawner objectives dynamically --- Assets/Design/Levels/WaveConfig_Test.asset | 2 ++ Assets/Scripts/Drag&Drop/DeleteShovel.cs | 1 - Assets/Scripts/LevelConfig/WaveConfig.cs | 21 ++++++++++++++++----- Assets/Scripts/LevelConfig/WaveObserver.cs | 10 +++++----- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Assets/Design/Levels/WaveConfig_Test.asset b/Assets/Design/Levels/WaveConfig_Test.asset index 0522608..2e4eca2 100644 --- a/Assets/Design/Levels/WaveConfig_Test.asset +++ b/Assets/Design/Levels/WaveConfig_Test.asset @@ -17,6 +17,8 @@ MonoBehaviour: _count: 4 - _enemy: {fileID: 80204295746100150, guid: 5bbf0d85fa5bb3f4599da79f0a84e3a9, type: 3} _count: 4 + - _enemy: {fileID: 80204295746100150, guid: 2419a879bd4e47d4fa8b30de0fcdde42, type: 3} + _count: 6 _nestedGroupSpawn: - groupSpawn: - _enemy: {fileID: 80204295746100150, guid: 5bbf0d85fa5bb3f4599da79f0a84e3a9, type: 3} diff --git a/Assets/Scripts/Drag&Drop/DeleteShovel.cs b/Assets/Scripts/Drag&Drop/DeleteShovel.cs index 9288b40..f9fb5f0 100644 --- a/Assets/Scripts/Drag&Drop/DeleteShovel.cs +++ b/Assets/Scripts/Drag&Drop/DeleteShovel.cs @@ -1,4 +1,3 @@ -using Codice.CM.Client.Differences; using System.Collections; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/Scripts/LevelConfig/WaveConfig.cs b/Assets/Scripts/LevelConfig/WaveConfig.cs index 43dbaaa..4fd06c4 100644 --- a/Assets/Scripts/LevelConfig/WaveConfig.cs +++ b/Assets/Scripts/LevelConfig/WaveConfig.cs @@ -18,6 +18,7 @@ public class WaveConfig : ScriptableObject private float _gameDuration = 1; private float _enemySpawndOnStart = 0; private int _enemySum = 0; + private List _constraintList = new List(); public List ConstantSpawn { get @@ -64,14 +65,24 @@ public class WaveConfig : ScriptableObject return _constantSpawn[0]; } else if (constraint != null) { - EnemyType randomEnemy; - do + if (!_constraintList.Contains(constraint)) { - randomEnemy = _constantSpawn[Random.Range(0, _constantSpawn.Count)]; - } while (randomEnemy.GetEnemyObject() == constraint); + _constraintList.Add(constraint); + } + if (_constraintList.Count < _constantSpawn.Count) + { + EnemyType randomEnemy; + do + { + randomEnemy = _constantSpawn[Random.Range(0, _constantSpawn.Count)]; + } while (_constraintList.Contains(randomEnemy.GetEnemyObject())); return randomEnemy; + } else + { + return null; + } } - return _constantSpawn[Random.Range(0, _constantSpawn.Count - 1)]; + return _constantSpawn[Random.Range(0, _constantSpawn.Count)]; } /** diff --git a/Assets/Scripts/LevelConfig/WaveObserver.cs b/Assets/Scripts/LevelConfig/WaveObserver.cs index 1c7c346..4f8f117 100644 --- a/Assets/Scripts/LevelConfig/WaveObserver.cs +++ b/Assets/Scripts/LevelConfig/WaveObserver.cs @@ -81,7 +81,7 @@ public class WaveObserver : Singleton spawnerSubject.ChangeSpawnSpeed(_levelConfig.Interval * _spawnerTiming); for (int spawnIndex = 0; spawnIndex < _copyConstantSpawn.Count; spawnIndex++) { - if (_copyConstantSpawn[spawnIndex] == 0) + if (_copyConstantSpawn[spawnIndex] == 0) //Doesn't compare this iteration because it's already empty { Debug.Log("--I'm empty--"); continue; @@ -97,15 +97,15 @@ public class WaveObserver : Singleton { if (spawner.Prefab.Equals(paramPrefab)) { - GameObject randomEnemy = _levelConfig.GetRandomSpawn(paramPrefab).GetEnemyObject(); - if (randomEnemy == spawner.Prefab) + EnemyType randomEnemy = _levelConfig.GetRandomSpawn(paramPrefab); + if (randomEnemy?.GetEnemyObject() == spawner.Prefab || randomEnemy == null) { spawner.StopSpawn(); Debug.Log("----Spawn Stopped----"); } else { - spawner.Prefab = randomEnemy; + spawner.Prefab = randomEnemy.GetEnemyObject(); Debug.Log("----Spawn Changed!!!----"); } } @@ -113,7 +113,7 @@ public class WaveObserver : Singleton } break; } - } + } } /**