From 911b6c5fe741f7a02305ac2f3db54799d62518d0 Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Tue, 29 Jul 2025 12:54:09 -0500 Subject: [PATCH] Fix visibility & add constructors, program builds --- src/asteroids.rs | 18 ++++++++++++++---- src/lib.rs | 9 +++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/asteroids.rs b/src/asteroids.rs index ca7e363..909d01c 100644 --- a/src/asteroids.rs +++ b/src/asteroids.rs @@ -1,3 +1,5 @@ +use std::time::Duration; + /// This is the module containing all the rock-related things /// not... not the whole game. use bevy::prelude::*; @@ -5,16 +7,16 @@ use bevy::prelude::*; use crate::{GameAssets, Position, Rotation, Velocity}; #[derive(Component, Deref, DerefMut)] -struct Asteroid(AsteroidSize); +pub struct Asteroid(AsteroidSize); -enum AsteroidSize { +pub enum AsteroidSize { SMALL, MEDIUM, LARGE, } #[derive(Resource)] -struct AsteroidSpawner { +pub struct AsteroidSpawner { timer: Timer, // TODO: Configurables? // - interval @@ -22,9 +24,17 @@ struct AsteroidSpawner { // - size distribution } +impl AsteroidSpawner { + pub fn new() -> Self { + Self { + timer: Timer::new(Duration::from_secs(3), TimerMode::Repeating), + } + } +} + /// Update the asteroid spawn timer and spawn any asteroids /// that are due this frame. -fn tick_asteroid_manager( +pub fn tick_asteroid_manager( mut commands: Commands, mut spawner: ResMut, game_assets: Res, diff --git a/src/lib.rs b/src/lib.rs index 8ee7bf3..88b11fa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,10 +3,9 @@ pub mod config; mod preparation_widget; mod title_screen; -use std::time::Duration; - use crate::config::{BACKGROUND_COLOR, PLAYER_SHIP_COLOR, SHIP_ROTATION, SHIP_THRUST, WINDOW_SIZE}; +use asteroids::AsteroidSpawner; use bevy::prelude::*; use bevy_inspector_egui::prelude::ReflectInspectorOptions; use bevy_inspector_egui::InspectorOptions; @@ -29,9 +28,7 @@ impl Plugin for AsteroidPlugin { .insert_resource(Lives(3)) .register_type::() .insert_resource(Score(0)) - .insert_resource(AsteroidSpawner { - timer: Timer::new(Duration::from_secs(3), TimerMode::Repeating), - }) + .insert_resource(AsteroidSpawner::new()) .init_resource::() .add_systems(Startup, spawn_camera) .add_systems(OnEnter(GameState::Playing), (spawn_player, spawn_ui)) @@ -41,7 +38,7 @@ impl Plugin for AsteroidPlugin { input_ship_thruster, input_ship_rotation, wrap_entities, - tick_asteroid_manager, + asteroids::tick_asteroid_manager, ) .run_if(in_state(GameState::Playing)), )