use bevy::prelude::*; use crate::components::Star; use crate::constants::{ STAR_COUNT, STAR_MAX_SIZE, STAR_MAX_SPEED, STAR_MIN_SIZE, STAR_MIN_SPEED, STAR_Z_DEPTH, WINDOW_HEIGHT, WINDOW_WIDTH, }; pub fn spawn_starfield(commands: &mut Commands) { for _ in 0..STAR_COUNT { let size = fastrand::f32() * (STAR_MAX_SIZE - STAR_MIN_SIZE) + STAR_MIN_SIZE; let speed = fastrand::f32() * (STAR_MAX_SPEED - STAR_MIN_SPEED) + STAR_MIN_SPEED; let brightness = fastrand::f32() * 0.5 + 0.5; // 0.5 to 1.0 commands.spawn(( SpriteBundle { sprite: Sprite { color: Color::rgb(brightness, brightness, brightness), custom_size: Some(Vec2::new(size, size)), ..default() }, transform: Transform::from_translation(Vec3::new( fastrand::f32() * WINDOW_WIDTH - WINDOW_WIDTH / 2.0, fastrand::f32() * WINDOW_HEIGHT - WINDOW_HEIGHT / 2.0, STAR_Z_DEPTH, )), ..default() }, Star { speed }, )); } } pub fn scroll_starfield(mut star_query: Query<(&mut Transform, &Star)>, time: Res