diff --git a/.vscode/settings.json b/.vscode/settings.json index fe117a2..bc89a82 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,7 @@ "despawn", "Despawns", "lerp", + "PRNG", "recip", "respawns", "timestep", diff --git a/Cargo.toml b/Cargo.toml index 3b6ee1c..22b0721 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,5 +37,5 @@ log = { version = "*", features = [ "max_level_debug", "release_max_level_warn", ] } -rand = { version = "0.9.1", default-features = false, features = ["std"] } +rand = { version = "0.9.1", default-features = false, features = ["std", "thread_rng"] } wyrand = "0.3.2" diff --git a/src/game/mod.rs b/src/game/mod.rs index 370d386..cd239ce 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -1,4 +1,5 @@ -pub mod objects; +mod objects; +mod rng; pub mod runtime; pub mod seed; pub mod setup; diff --git a/src/game/objects.rs b/src/game/objects.rs index 2ba8d60..2fbe122 100644 --- a/src/game/objects.rs +++ b/src/game/objects.rs @@ -1,18 +1,22 @@ use avian2d::prelude::*; use bevy::prelude::*; +/// Basic implementation of a physics object #[derive(Component, Default)] #[require(Collider, Mesh2d, MeshMaterial2d, Restitution = Restitution::new(1.0), RigidBody, TransformInterpolation, Transform)] struct GameObject; +/// A basic ball with which to interact #[derive(Component, Default)] #[require(GameObject, RigidBody = RigidBody::Dynamic)] pub struct Ball; +/// The controllable ball #[derive(Component, Default)] #[require(Ball)] pub struct Player; +/// The static objects bounding the playable area #[derive(Component, Default)] #[require(GameObject, RigidBody = RigidBody::Static)] pub struct Wall; diff --git a/src/game/rng.rs b/src/game/rng.rs new file mode 100644 index 0000000..b80a739 --- /dev/null +++ b/src/game/rng.rs @@ -0,0 +1,7 @@ +use rand::random; +use wyrand::WyRand; + +/// Initialize a `WyRand` using `rand`'s thread-local random number generator +pub fn thread_rng() -> WyRand { + WyRand::new(random()) +} diff --git a/src/game/runtime.rs b/src/game/runtime.rs index a0ab185..664dc49 100644 --- a/src/game/runtime.rs +++ b/src/game/runtime.rs @@ -6,6 +6,7 @@ use bevy::{ use super::objects::Player; +/// Move the player character based on the keyboard input pub fn move_player( time: Res