all spawners available can be used on first wave tick

This commit is contained in:
2026-05-16 19:56:07 +02:00
parent 1898d91a28
commit 2103832e46
2 changed files with 27 additions and 6 deletions

View File

@@ -57,14 +57,14 @@ public partial class WaveManager : Node
{ {
var randomizedSpawners = Spawners.ToArray(); var randomizedSpawners = Spawners.ToArray();
randomizedSpawners.Shuffle(); randomizedSpawners.Shuffle();
foreach (var (enemyDescription, numberRemaining) in CurrentWave) foreach (var spawner in randomizedSpawners)
{ {
if (numberRemaining <= 0) continue; if (SpawnersInUse.Contains(spawner)) continue;
foreach (var spawner in randomizedSpawners) foreach (var (enemyDescription, numberRemaining) in CurrentWave)
{ {
if (numberRemaining <= 0) continue;
if (!spawner.SupportedEnemyTypes.Contains(enemyDescription.Type)) continue; if (!spawner.SupportedEnemyTypes.Contains(enemyDescription.Type)) continue;
if (SpawnersInUse.Contains(spawner)) continue;
var spawnedEnemy = spawner.SpawnEnemy(enemyDescription); var spawnedEnemy = spawner.SpawnEnemy(enemyDescription);
if (spawnedEnemy == null) continue; if (spawnedEnemy == null) continue;
@@ -79,6 +79,27 @@ public partial class WaveManager : Node
} }
} }
// foreach (var (enemyDescription, numberRemaining) in CurrentWave)
// {
// if (numberRemaining <= 0) continue;
// foreach (var spawner in randomizedSpawners)
// {
// if (!spawner.SupportedEnemyTypes.Contains(enemyDescription.Type)) continue;
// if (SpawnersInUse.Contains(spawner)) continue;
//
// var spawnedEnemy = spawner.SpawnEnemy(enemyDescription);
// if (spawnedEnemy == null) continue;
//
// CurrentSpawnedEnemies[spawnedEnemy.GetInstanceId()] = spawnedEnemy;
// SpawnersInUse.Add(spawner);
//
// spawnedEnemy.OnKilled += instanceId=> SpawnedEnemyDied(instanceId, spawner);
//
// CurrentWave[enemyDescription]--;
// break;
// }
// }
var remainingEnemiesToSpawn = CurrentWave.Values.Sum(); var remainingEnemiesToSpawn = CurrentWave.Values.Sum();
if (remainingEnemiesToSpawn <= 0) return; // Wave is fully spawned if (remainingEnemiesToSpawn <= 0) return; // Wave is fully spawned
GetTree().CreateTimer(1.0f).Timeout += SpawnEnemiesAsAvailable; // Call back the same function later to try and spawn the rest GetTree().CreateTimer(1.0f).Timeout += SpawnEnemiesAsAvailable; // Call back the same function later to try and spawn the rest

View File

@@ -43,7 +43,7 @@ item_0/text = "1 - ExampleLevel"
[node name="SceneLister" type="Node" parent="." unique_id=149935027] [node name="SceneLister" type="Node" parent="." unique_id=149935027]
script = ExtResource("3_stdqw") script = ExtResource("3_stdqw")
files = Array[String](["res://maps/levels/1 - tuto_movement.tscn", "res://maps/levels/2 - tuto_sword.tscn", "res://maps/levels/3 - tuto_enemies.tscn", "res://maps/zoos/grounded_flying_ennemies.tscn", "res://maps/gyms/metrics.tscn"]) files = Array[String](["res://maps/levels/1 - tuto_movement.tscn", "res://maps/levels/2 - tuto_sword.tscn", "res://maps/levels/3 - tuto_enemies.tscn", "res://maps/levels/4 - tuto_waves.tscn"])
directory = "res://maps" directory = "res://maps"
[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"] [connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]