use rusting_engine::prelude::*;
pub const WAVE_SIZE: i32 = 2;
pub const FALL_Y: f32 = -10.0;
pub const SPACING: f32 = 1.5;
pub fn wave_spawner(scene: &mut GameScene<'_>) {
let mut left = 0;
for name in scene.in_class("enemy") {
if name == "Wave Enemy" {
continue;
}
if scene.object(&name).position()[1] < FALL_Y {
scene.despawn(&name);
} else {
left += 1;
}
}
if left == 0 {
let wave = scene.add_to_counter("wave", 1);
let spawn = scene.object("Wave Spawn").position();
for n in 0..wave * WAVE_SIZE {
let name = format!("Wave Enemy {wave}-{}", n + 1);
let at = [spawn[0] + SPACING * n as f32, spawn[1], spawn[2]];
scene.spawn_copy("Wave Enemy", name.as_str(), at);
scene.set_visible(&name, true);
left += 1;
}
}
scene.set_counter("wave_enemies_left", left);
}