Skip to content

Commit c202078

Browse files
committed
upgrade: bevy 0.15, bevy_ratatui_camera 0.8
1 parent 5e2ae54 commit c202078

File tree

8 files changed

+1055
-916
lines changed

8 files changed

+1055
-916
lines changed

Cargo.lock

+920-498
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ categories = ["command-line-interface"]
1212
keywords = ["bevy", "ratatui", "terminal", "tui", "screensaver"]
1313

1414
[dependencies]
15-
avian2d = "0.1.1"
16-
bevy = "0.14.2"
17-
bevy_ratatui = "0.6.4"
18-
bevy_ratatui_render = "0.6.0"
15+
avian2d = { git = "https://github.com/Jondolf/avian.git", branch = "main" }
16+
bevy = "0.15.0"
17+
bevy_ratatui = "0.7.0"
18+
bevy_ratatui_camera = "0.8.2"
1919
clap = { version = "4.5.13", features = ["derive"] }
2020
rand = "0.8.5"
2121
rand_chacha = "0.3.1"

src/bubbles.rs

+45-51
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use avian2d::{
55
};
66
use bevy::prelude::*;
77
use bevy_ratatui::event::ResizeEvent;
8-
use bevy_ratatui_render::RatatuiRenderContext;
8+
use bevy_ratatui_camera::RatatuiCamera;
99
use rand::{Rng, SeedableRng};
1010
use rand_chacha::ChaCha8Rng;
1111

@@ -49,41 +49,36 @@ pub struct BubbleSprite(Handle<Image>);
4949
#[derive(Resource, Deref, DerefMut, Default)]
5050
pub struct BubbleVisibleRegion(Vec2);
5151

52-
#[derive(Bundle)]
53-
pub struct BubbleBundle {
54-
bubble: Bubble,
55-
sprite: SpriteBundle,
56-
rigidbody: RigidBody,
57-
collider: Collider,
58-
locked_axes: LockedAxes,
59-
friction: Friction,
60-
}
61-
62-
impl BubbleBundle {
63-
fn new(rng: &mut BubbleRng, sprite: &BubbleSprite, region: &Rectangle) -> Self {
64-
Self {
65-
bubble: Bubble {
66-
target: region.sample_interior(&mut rng.0),
67-
timer: Timer::from_seconds(3., TimerMode::Repeating),
68-
},
69-
sprite: SpriteBundle {
70-
transform: Transform::from_translation(
71-
region.sample_interior(&mut rng.0).extend(0.),
72-
),
73-
texture: (**sprite).clone(),
74-
sprite: Sprite {
75-
color: Color::hsl(rng.gen_range(0.0..360.0), 1.0, 0.8),
76-
custom_size: Some(Vec2::splat(BUBBLE_RADIUS * 2.)),
77-
..default()
78-
},
79-
..default()
80-
},
81-
rigidbody: RigidBody::Dynamic,
82-
collider: Collider::circle(BUBBLE_RADIUS as Scalar),
83-
locked_axes: LockedAxes::ROTATION_LOCKED,
84-
friction: Friction::new(0.0),
85-
}
86-
}
52+
fn create_bubble(
53+
rng: &mut BubbleRng,
54+
sprite: &BubbleSprite,
55+
region: &Rectangle,
56+
) -> (
57+
Bubble,
58+
Sprite,
59+
Transform,
60+
RigidBody,
61+
Collider,
62+
LockedAxes,
63+
Friction,
64+
) {
65+
(
66+
Bubble {
67+
target: region.sample_interior(&mut rng.0),
68+
timer: Timer::from_seconds(3., TimerMode::Repeating),
69+
},
70+
Sprite {
71+
image: (**sprite).clone(),
72+
color: Color::hsl(rng.gen_range(0.0..360.0), 1.0, 0.8),
73+
custom_size: Some(Vec2::splat(BUBBLE_RADIUS * 2.)),
74+
..default()
75+
},
76+
Transform::from_translation(region.sample_interior(&mut rng.0).extend(0.)),
77+
RigidBody::Dynamic,
78+
Collider::circle(BUBBLE_RADIUS as Scalar),
79+
LockedAxes::ROTATION_LOCKED,
80+
Friction::new(0.0),
81+
)
8782
}
8883

8984
#[derive(Resource, Deref, DerefMut)]
@@ -95,15 +90,15 @@ impl Default for BubbleTimer {
9590
}
9691
}
9792

98-
fn bubbles_setup_system(
99-
mut commands: Commands,
100-
ratatui_render: Res<RatatuiRenderContext>,
101-
asset_server: Res<AssetServer>,
102-
) {
103-
let mut camera = Camera2dBundle::default();
104-
camera.projection.scale = ORTHO_SCALING;
105-
camera.camera.target = ratatui_render.target("main").unwrap_or_default();
106-
commands.spawn(camera);
93+
fn bubbles_setup_system(mut commands: Commands, asset_server: Res<AssetServer>) {
94+
commands.spawn((
95+
Camera2d,
96+
Projection::Orthographic(OrthographicProjection {
97+
scale: ORTHO_SCALING,
98+
..OrthographicProjection::default_2d()
99+
}),
100+
RatatuiCamera::autoresize(),
101+
));
107102

108103
let rng = ChaCha8Rng::seed_from_u64(19878367467712);
109104
commands.insert_resource(BubbleRng(rng));
@@ -126,7 +121,7 @@ fn bubbles_spawn_system(
126121
timer.tick(time.delta());
127122
if timer.finished() && *count < **spawn_amount {
128123
*count += 1;
129-
commands.spawn(BubbleBundle::new(
124+
commands.spawn(create_bubble(
130125
&mut rng,
131126
&sprite,
132127
&Rectangle::from_size(**visible_region - BUBBLE_RADIUS * 2.),
@@ -138,10 +133,9 @@ fn handle_resize_system(
138133
mut resize_events: EventReader<ResizeEvent>,
139134
mut visible_region: ResMut<BubbleVisibleRegion>,
140135
mut spawn_amount: ResMut<BubbleAmount>,
141-
ratatui_render: Res<RatatuiRenderContext>,
142136
) {
143-
for _ in resize_events.read() {
144-
let (width, height) = ratatui_render.dimensions("main").unwrap();
137+
for resize in resize_events.read() {
138+
let (width, height) = (resize.width * 2, resize.height * 4);
145139
let terminal_dimensions = Vec2::new(width as f32, height as f32);
146140
**visible_region = terminal_dimensions * ORTHO_SCALING;
147141
**spawn_amount = ((visible_region.x * visible_region.y) / 777.) as u32;
@@ -170,7 +164,7 @@ fn bubble_movement_system(
170164

171165
bubble.target = bubble
172166
.target
173-
.move_towards(next_point, time.delta_seconds() * 10.);
167+
.move_towards(next_point, time.delta_secs() * 10.);
174168

175169
**velocity += diff * 0.01;
176170
**velocity = velocity.clamp(
@@ -183,7 +177,7 @@ fn bubble_movement_system(
183177

184178
fn bubble_color_system(time: Res<Time>, mut bubbles: Query<&mut Sprite, With<Bubble>>) {
185179
for mut sprite in &mut bubbles {
186-
let new_hue = (sprite.color.hue() + time.delta_seconds() * 10.) % 360.;
180+
let new_hue = (sprite.color.hue() + time.delta_secs() * 10.) % 360.;
187181
sprite.color.set_hue(new_hue);
188182
}
189183
}

src/bubbles_3d.rs

-233
This file was deleted.

0 commit comments

Comments
 (0)