From a34085655a483d4e473309f0f9b1e3727da5a0f1 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 18 Nov 2025 00:48:25 +0500 Subject: [PATCH] Enemy spawner --- src/ships/enemy_spawner.rs | 67 ++++++++++++++++++++++++++++++++++++++ src/ships/mod.rs | 25 ++++++-------- 2 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 src/ships/enemy_spawner.rs diff --git a/src/ships/enemy_spawner.rs b/src/ships/enemy_spawner.rs new file mode 100644 index 0000000..bdd4db7 --- /dev/null +++ b/src/ships/enemy_spawner.rs @@ -0,0 +1,67 @@ +use std::time::Duration; + +use bevy::prelude::*; +use rand::{prelude::*, rng}; + +use crate::{ + FIRST_CORNER_X, FIRST_CORNER_Y, GameObject, SECOND_CORNER_X, SECOND_CORNER_Y, + ships::{EnemySprite, enemy::spawn_enemy}, +}; + +const MAX_ENEMIES: f32 = 20.0; +const MIN_TIME: u64 = 2; +const START_TIME: f32 = 10.0; +const TIME_PENALTY: f32 = 0.1; +const ENEMY_INCREASE: f32 = 0.25; + +#[derive(Component)] +pub struct EnemySpawner { + spawn_timer: Timer, + amount: f32, +} + +pub fn setup_enemy_spawner(mut commands: Commands) { + commands.spawn(( + EnemySpawner { + spawn_timer: Timer::from_seconds(START_TIME, TimerMode::Repeating), + amount: 1., + }, + GameObject, + )); +} + +pub fn tick_enemy_spawner( + mut commands: Commands, + time: Res