this repo has no description
1use bevy::prelude::*;
2
3use crate::{ghost::TargetedBerry, sample_arena};
4
5pub fn berry_plugin(app: &mut App) {
6 app.add_systems(FixedUpdate, spawn_berries)
7 .add_message::<NewBerry>()
8 .add_observer(
9 |trigger: On<Add, TargetedBerry>, mut sprite: Query<&mut Sprite>| {
10 sprite.get_mut(trigger.entity).unwrap().color = Color::linear_rgb(2.0, 1.0, 0.8);
11 },
12 )
13 .add_observer(
14 |trigger: On<Remove, TargetedBerry>, mut sprite: Query<&mut Sprite>| {
15 sprite.get_mut(trigger.entity).unwrap().color = Color::WHITE;
16 },
17 );
18}
19
20#[derive(Component)]
21pub struct Berry;
22
23#[derive(Message)]
24pub struct NewBerry(pub Entity);
25
26pub fn spawn_berries(
27 mut commands: Commands,
28 asset_server: Res<AssetServer>,
29 mut new_berries: MessageWriter<NewBerry>,
30) {
31 for _ in 0..5 {
32 let new = commands
33 .spawn((
34 Berry,
35 Transform::from_translation(sample_arena(&mut rand::rng()).extend(0.0)),
36 Sprite::from_image(asset_server.load("berry.png")),
37 ))
38 .id();
39 new_berries.write(NewBerry(new));
40 }
41}