diff --git a/Cargo.lock b/Cargo.lock index 196cea9..d7ad078 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -742,12 +742,43 @@ dependencies = [ "thread_local", ] +[[package]] +name = "bevy_prng" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08497116068623556e67e59b0204f5d9d8e7a2d4fd378f87c9c798f7af93f236" +dependencies = [ + "bevy", + "rand_chacha", + "rand_core", + "rand_pcg", + "rand_xoshiro", + "serde", + "serde_derive", + "wyrand", +] + [[package]] name = "bevy_ptr" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268" +[[package]] +name = "bevy_rand" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c98c3be37468a6008cf0bb392e3decff0fc062898570b0ea4543fa6e9355bf7a" +dependencies = [ + "bevy", + "bevy_prng", + "getrandom", + "rand_chacha", + "rand_core", + "serde", + "serde_derive", +] + [[package]] name = "bevy_rapier2d" version = "0.26.0" @@ -1064,8 +1095,9 @@ name = "bin-projekt-evader" version = "0.1.0" dependencies = [ "bevy", + "bevy_rand", "bevy_rapier2d", - "noise", + "rand", "some_bevy_tools", ] @@ -2520,17 +2552,6 @@ dependencies = [ "libc", ] -[[package]] -name = "noise" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da45c8333f2e152fc665d78a380be060eb84fad8ca4c9f7ac8ca29216cff0cc" -dependencies = [ - "num-traits", - "rand", - "rand_xorshift", -] - [[package]] name = "nom" version = "7.1.3" @@ -2907,6 +2928,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + [[package]] name = "presser" version = "0.3.1" @@ -2958,22 +2985,50 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ + "libc", + "rand_chacha", "rand_core", ] +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", + "serde", +] + [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", + "serde", +] [[package]] -name = "rand_xorshift" -version = "0.3.0" +name = "rand_pcg" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ "rand_core", + "serde", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", + "serde", ] [[package]] @@ -4197,6 +4252,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "wyrand" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dadc56f0dc130aa22c0d2fe303ccee3a2ad429c87d257642e96017920c66ed0" +dependencies = [ + "rand_core", + "serde", +] + [[package]] name = "x11-dl" version = "2.21.0" diff --git a/Cargo.toml b/Cargo.toml index 06842e4..e6766d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,8 +5,9 @@ edition = "2021" [dependencies] bevy = {version = "0.13.2", features = ["dynamic_linking"]} +bevy_rand = { version = "0.6.0", features = ["wyrand"] } bevy_rapier2d = "0.26.0" -noise = "0.9.0" +rand = "0.8.5" some_bevy_tools = "0.2.4" [profile.dev] diff --git a/src/drops.rs b/src/drops.rs new file mode 100644 index 0000000..7815ad3 --- /dev/null +++ b/src/drops.rs @@ -0,0 +1,139 @@ +use bevy::{ + prelude::*, + sprite::{MaterialMesh2dBundle, Mesh2dHandle}, + utils::HashSet, +}; +use bevy_rand::prelude::*; +use bevy_rapier2d::prelude::*; +use rand::Rng; + +use crate::{player::Player, scene::SceneObj, METER}; + +#[derive(Component)] +struct SpawnTimer(pub Timer); + +#[derive(Component)] +struct DroppedCrate; + +#[derive(Debug, Event)] +struct CrateDropEvent { + pos: f32, +} + +pub fn spawner_plugin(app: &mut App) { + app.add_plugins(EntropyPlugin::::default()) + .add_event::() + .add_event::() + .add_systems(Startup, add_timer) + .add_systems( + Update, + (drop_crates, do_drop, crate_collisions, delete_on_env_coll), + ); +} + +fn add_timer(mut commands: Commands) { + commands.spawn(SpawnTimer(Timer::from_seconds(2., TimerMode::Repeating))); +} + +fn drop_crates( + mut ev_drop: EventWriter, + mut rng: ResMut>, + mut spawn_timer: Query<&mut SpawnTimer>, + time: Res