diff --git a/Assets/Design/Levels/WaveConfig_Test.asset b/Assets/Design/Levels/WaveConfig_Test.asset new file mode 100644 index 0000000..021794c --- /dev/null +++ b/Assets/Design/Levels/WaveConfig_Test.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb0795e326609f0499365f5b65c2b5cd, type: 3} + m_Name: WaveConfig_Test + m_EditorClassIdentifier: + _constantSpawn: + - _enemy: {fileID: 80204295746100150, guid: 1be769d6ef642314b8846bed35e7297c, type: 3} + _count: 20 + _nestedGroupSpawn: + - groupSpawn: + - _enemy: {fileID: 80204295746100150, guid: 5bbf0d85fa5bb3f4599da79f0a84e3a9, type: 3} + _count: 2 + triggerTime: 2 + _gameDuration: 3 diff --git a/Assets/Design/Levels/WaveConfig_Test.asset.meta b/Assets/Design/Levels/WaveConfig_Test.asset.meta new file mode 100644 index 0000000..0c8bb1d --- /dev/null +++ b/Assets/Design/Levels/WaveConfig_Test.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61b21509b3e4be0438ea87b4e7a73e17 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LevelConfig/WaveObserver.cs b/Assets/Scripts/LevelConfig/WaveObserver.cs index 2ab3d1c..e1d3ebb 100644 --- a/Assets/Scripts/LevelConfig/WaveObserver.cs +++ b/Assets/Scripts/LevelConfig/WaveObserver.cs @@ -87,16 +87,31 @@ public class WaveObserver : Singleton if (_levelConfig.ConstantSpawn[i].GetEnemyObject() == paramPrefab) { currentCount = --_copyConstantSpawn[i]; - break; - } - } - if (currentCount <= 0) - { - foreach (SpawnerTile spawner in _subjects) - { - if (spawner.Prefab.Equals(paramPrefab)) + //break; + Debug.Log("Amout to spawn is now: " + currentCount); + if (currentCount <= 0) { - spawner.StopSpawn(); + bool hasNextTarget = false; + for (int j = i; j < _copyConstantSpawn.Count; j++) + { + if (_copyConstantSpawn[_copyConstantSpawn.Count - j] > 0) + { + spawnerSubject.Prefab = _levelConfig.ConstantSpawn[j].GetEnemyObject(); + hasNextTarget = true; + Debug.Log(spawnerSubject.Prefab.name); + } + } + if (!hasNextTarget) + { + foreach (SpawnerTile spawner in _subjects) + { + if (spawner.Prefab.Equals(paramPrefab)) + { + spawner.StopSpawn(); + Debug.Log("----Spawn Stopped----"); + } + } + } } } } @@ -122,12 +137,34 @@ public class WaveObserver : Singleton * Called when an enemy dies * Reactivates spawning on that row if disabled before */ - public void NotifyDies(int position, float toughness) + public void NotifyDies(int position, float toughness, GameObject paramPrefab) { _aliveEnemyCount[position] -= toughness; if (_aliveEnemyCount[position] < MAXTOUGHNESS) { - _subjects[position].StartSpawn(); + for (int i = 0; i < _copyConstantSpawn.Count; i++) + { + if (_levelConfig.ConstantSpawn[i].GetEnemyObject() == paramPrefab) + { + // Checks if there are more of the same type to create + if (_copyConstantSpawn[i] > 0) + { + _subjects[position].StartSpawn(); + break; + } + for (int j = i; j < _copyConstantSpawn.Count; j++) + { + // Checks if there are other types to create + if (_copyConstantSpawn[_copyConstantSpawn.Count - j] > 0) + { + _subjects[position].Prefab = _levelConfig.ConstantSpawn[j].GetEnemyObject(); + _subjects[position].StartSpawn(); + break; + } + } + break; + } + } } } diff --git a/Assets/Scripts/Opponent/Opponent.cs b/Assets/Scripts/Opponent/Opponent.cs index a8ca40f..f5ba5db 100644 --- a/Assets/Scripts/Opponent/Opponent.cs +++ b/Assets/Scripts/Opponent/Opponent.cs @@ -63,7 +63,7 @@ public class Opponent : Entity public override void Death() { - _observer.NotifyDies(_observerIndex, _toughness); + _observer.NotifyDies(_observerIndex, _toughness, gameObject); base.Death(); } diff --git a/Assets/Scripts/Tiles/SpawnerTile.cs b/Assets/Scripts/Tiles/SpawnerTile.cs index ac47b5a..d279747 100644 --- a/Assets/Scripts/Tiles/SpawnerTile.cs +++ b/Assets/Scripts/Tiles/SpawnerTile.cs @@ -60,8 +60,9 @@ public class SpawnerTile : LevelTile } } } + Debug.Log("Time: " + _spawnCounter); if (_spawnCounter < _spawnSpeed) return; - + Debug.Log("Stopped but still spawning"); _spawnCounter = 0; if (!_cooldownEnded) {