Move Asteroid components to the objects.rs mod

This commit is contained in:
2025-08-11 22:44:05 -05:00
parent f4484f759f
commit f5ff7c8779
5 changed files with 31 additions and 24 deletions

View File

@@ -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<Self> {
match self {
AsteroidSize::Small => None,
AsteroidSize::Medium => Some(AsteroidSize::Small),
AsteroidSize::Large => Some(AsteroidSize::Medium),
}
}
}
#[derive(Resource)]
pub struct AsteroidSpawner {
rng: std::sync::Mutex<rand::rngs::StdRng>,

View File

@@ -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.

View File

@@ -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};

25
src/objects.rs Normal file
View File

@@ -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<Self> {
match self {
AsteroidSize::Small => None,
AsteroidSize::Medium => Some(AsteroidSize::Small),
AsteroidSize::Large => Some(AsteroidSize::Medium),
}
}
}

View File

@@ -1,6 +1,6 @@
use crate::{
AngularVelocity, GameAssets, GameState, Lives,
asteroids::Asteroid,
objects::Asteroid,
events::{BulletDestroy, ShipDestroy},
physics::{Velocity, Wrapping},
};