this repo has no description
at main 41 lines 1.2 kB view raw
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}