Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[advisories]
# quick-xml is pulled transitively through bevy 0.15 -> winit 0.30 ->
# smithay-client-toolkit -> wayland-scanner. The latest compatible
# wayland-scanner line only reaches quick-xml 0.39.4, while these advisories
# require quick-xml >=0.41.0. Keep this narrow until the Bevy/winit migration
# in Dependabot #14 can move the Wayland stack past the constraint.
ignore = [
"RUSTSEC-2026-0194",
"RUSTSEC-2026-0195",
]
83 changes: 69 additions & 14 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }
thiserror = "2"
rand = "0.8"
rand = "0.10"
dirs = "6"

[profile.dev]
Expand Down
18 changes: 9 additions & 9 deletions src/systems/critter_spawner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::components::{Critter, CritterSpecies};
use crate::events::CritterArrived;
use crate::resources::BehaviorSignals;
use bevy::prelude::*;
use rand::Rng;
use rand::{Rng, RngExt};

pub fn critter_spawner_system(
mut commands: Commands,
Expand All @@ -21,7 +21,7 @@ pub fn critter_spawner_system(
.iter()
.any(|c| c.species == CritterSpecies::Butterfly);
if !has_butterfly && *spawn_timer > 5.0 {
let mut rng = rand::thread_rng();
let mut rng = rand::rng();
let path = random_butterfly_path(&mut rng);

commands.spawn((
Expand All @@ -47,8 +47,8 @@ pub fn critter_spawner_system(

// Beetle: 5% chance per minute when active
if behavior.is_active && *spawn_timer > 60.0 {
let mut rng = rand::thread_rng();
if rng.gen::<f32>() < 0.05 {
let mut rng = rand::rng();
if rng.random::<f32>() < 0.05 {
let has_beetle = existing_critters
.iter()
.any(|c| c.species == CritterSpecies::Beetle);
Expand Down Expand Up @@ -79,11 +79,11 @@ pub fn critter_spawner_system(
}

fn random_butterfly_path(rng: &mut impl Rng) -> [Vec2; 4] {
let enter_side = if rng.gen_bool(0.5) { -1.0 } else { 1.0 };
let enter_side = if rng.random_bool(0.5) { -1.0 } else { 1.0 };
[
Vec2::new(enter_side * 500.0, rng.gen_range(-100.0..200.0)),
Vec2::new(enter_side * 200.0, rng.gen_range(0.0..250.0)),
Vec2::new(-enter_side * 150.0, rng.gen_range(-50.0..200.0)),
Vec2::new(-enter_side * 500.0, rng.gen_range(-100.0..200.0)),
Vec2::new(enter_side * 500.0, rng.random_range(-100.0..200.0)),
Vec2::new(enter_side * 200.0, rng.random_range(0.0..250.0)),
Vec2::new(-enter_side * 150.0, rng.random_range(-50.0..200.0)),
Vec2::new(-enter_side * 500.0, rng.random_range(-100.0..200.0)),
]
}
12 changes: 6 additions & 6 deletions src/systems/fog.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::components::FogWisp;
use crate::resources::{WeatherState, WeatherType};
use bevy::prelude::*;
use rand::Rng;
use rand::RngExt;

#[derive(Resource)]
pub struct FogAssets {
Expand Down Expand Up @@ -34,20 +34,20 @@ pub fn fog_spawn_system(

// Spawn wisps if we need more
if current_count < target_count {
let mut rng = rand::thread_rng();
let mut rng = rand::rng();
commands.spawn((
Sprite {
image: fog_assets.fog_wisp_handle.clone(),
..default()
},
Transform::from_xyz(
rng.gen_range(-450.0..450.0),
rng.gen_range(-250.0..250.0),
rng.random_range(-450.0..450.0),
rng.random_range(-250.0..250.0),
50.0,
),
FogWisp {
drift_speed: rng.gen_range(10.0..30.0),
alpha_phase: rng.gen_range(0.0..std::f32::consts::TAU),
drift_speed: rng.random_range(10.0..30.0),
alpha_phase: rng.random_range(0.0..std::f32::consts::TAU),
},
));
}
Expand Down
13 changes: 8 additions & 5 deletions src/systems/rain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::components::RainDrop;
use crate::resources::WeatherState;
use crate::resources::WeatherType;
use bevy::prelude::*;
use rand::Rng;
use rand::RngExt;

const RAIN_SPAWN_RATE: f32 = 15.0; // drops per second

Expand Down Expand Up @@ -48,18 +48,21 @@ pub fn rain_spawn_system(
rain_assets.spawn_timer.tick(time.delta());

if rain_assets.spawn_timer.just_finished() {
let mut rng = rand::thread_rng();
let mut rng = rand::rng();

// Spawn rain drops based on multiplier
if rng.gen::<f32>() < spawn_multiplier {
if rng.random::<f32>() < spawn_multiplier {
commands.spawn((
Sprite {
image: rain_assets.raindrop_handle.clone(),
..default()
},
Transform::from_xyz(rng.gen_range(-420.0..420.0), 320.0, 50.0),
Transform::from_xyz(rng.random_range(-420.0..420.0), 320.0, 50.0),
RainDrop {
velocity: Vec2::new(rng.gen_range(-10.0..10.0), rng.gen_range(-300.0..-200.0)),
velocity: Vec2::new(
rng.random_range(-10.0..10.0),
rng.random_range(-300.0..-200.0),
),
lifetime: 3.0,
},
));
Expand Down
15 changes: 9 additions & 6 deletions src/systems/wind.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::components::WindLeaf;
use crate::resources::{WeatherState, WeatherType};
use bevy::prelude::*;
use rand::Rng;
use rand::RngExt;

#[derive(Resource)]
pub struct WindAssets {
Expand Down Expand Up @@ -30,23 +30,26 @@ pub fn wind_spawn_system(
wind_assets.spawn_timer.tick(time.delta());

if wind_assets.spawn_timer.just_finished() {
let mut rng = rand::thread_rng();
let mut rng = rand::rng();

// Random spawn chance (3-8 per second)
if rng.gen::<f32>() < 0.5 {
if rng.random::<f32>() < 0.5 {
commands.spawn((
Sprite {
image: wind_assets.leaf_handle.clone(),
..default()
},
Transform::from_xyz(
450.0, // Start from right edge
rng.gen_range(-200.0..200.0),
rng.random_range(-200.0..200.0),
50.0,
),
WindLeaf {
velocity: Vec2::new(rng.gen_range(-200.0..-100.0), rng.gen_range(-20.0..20.0)),
rotation_speed: rng.gen_range(-3.0..3.0),
velocity: Vec2::new(
rng.random_range(-200.0..-100.0),
rng.random_range(-20.0..20.0),
),
rotation_speed: rng.random_range(-3.0..3.0),
lifetime: 8.0,
},
));
Expand Down
Loading