diff --git a/src/asteroids.rs b/src/asteroids.rs index 6285920..ff43e68 100644 --- a/src/asteroids.rs +++ b/src/asteroids.rs @@ -8,29 +8,9 @@ use std::time::Duration; use bevy::prelude::*; use crate::{ - config::ASTEROID_LIFETIME, events::{AsteroidDestroy, SpawnAsteroid}, physics::Velocity, GameAssets, Lifetime, WorldSize + config::ASTEROID_LIFETIME, events::{AsteroidDestroy, SpawnAsteroid}, objects::{Asteroid, AsteroidSize}, physics::Velocity, GameAssets, Lifetime, WorldSize }; -#[derive(Component, Deref, DerefMut)] -pub struct Asteroid(AsteroidSize); - -#[derive(Clone, Copy, Debug)] -pub enum AsteroidSize { - Small, - Medium, - Large, -} - -impl AsteroidSize { - fn next(&self) -> Option { - match self { - AsteroidSize::Small => None, - AsteroidSize::Medium => Some(AsteroidSize::Small), - AsteroidSize::Large => Some(AsteroidSize::Medium), - } - } -} - #[derive(Resource)] pub struct AsteroidSpawner { rng: std::sync::Mutex, diff --git a/src/events.rs b/src/events.rs index 1369740..27758d7 100644 --- a/src/events.rs +++ b/src/events.rs @@ -1,6 +1,6 @@ use bevy::prelude::*; -use crate::asteroids::AsteroidSize; +use crate::objects::AsteroidSize; /// Signals that the player's ship has been destroyed. /// Used when the player collides with an asteroid. diff --git a/src/lib.rs b/src/lib.rs index 3c65614..336e851 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,17 +1,19 @@ mod asteroids; pub mod config; mod events; +mod objects; mod physics; mod preparation_widget; mod ship; mod title_screen; -use crate::asteroids::{Asteroid, AsteroidSpawner}; +use crate::asteroids::{AsteroidSpawner}; use crate::config::{ ASTEROID_SMALL_COLOR, BACKGROUND_COLOR, BULLET_COLOR, BULLET_LIFETIME, BULLET_SPEED, PLAYER_SHIP_COLOR, SHIP_ROTATION, SHIP_THRUST, SHIP_THRUSTER_COLOR_ACTIVE, SHIP_THRUSTER_COLOR_INACTIVE, WINDOW_SIZE, }; +use crate::objects::Asteroid; use crate::physics::AngularVelocity; use crate::ship::{Bullet, Ship}; diff --git a/src/objects.rs b/src/objects.rs new file mode 100644 index 0000000..b4ba8e6 --- /dev/null +++ b/src/objects.rs @@ -0,0 +1,25 @@ +//! This module contains all the "things" in the game. +//! +//! Asteroids, the player's ship, and such. + +use bevy::{ecs::component::Component, prelude::{Deref, DerefMut}}; + +#[derive(Component, Deref, DerefMut)] +pub struct Asteroid(pub AsteroidSize); + +#[derive(Clone, Copy, Debug)] +pub enum AsteroidSize { + Small, + Medium, + Large, +} + +impl AsteroidSize { + pub fn next(&self) -> Option { + match self { + AsteroidSize::Small => None, + AsteroidSize::Medium => Some(AsteroidSize::Small), + AsteroidSize::Large => Some(AsteroidSize::Medium), + } + } +} diff --git a/src/ship.rs b/src/ship.rs index 507c49f..54d4abe 100644 --- a/src/ship.rs +++ b/src/ship.rs @@ -1,6 +1,6 @@ use crate::{ AngularVelocity, GameAssets, GameState, Lives, - asteroids::Asteroid, + objects::Asteroid, events::{BulletDestroy, ShipDestroy}, physics::{Velocity, Wrapping}, };