diff --git a/examples/game/breakout/main.rs b/examples/game/breakout/main.rs index 7239c4fefe..7e3206f242 100644 --- a/examples/game/breakout/main.rs +++ b/examples/game/breakout/main.rs @@ -6,11 +6,13 @@ use bevy::{ fn main() { App::build() .add_default_plugins() + .add_resource(Scoreboard { score: 0 }) .add_resource(ClearColor(Color::rgb(0.7, 0.7, 0.7))) .add_startup_system(setup.system()) .add_system(paddle_movement_system.system()) .add_system(ball_collision_system.system()) .add_system(ball_movement_system.system()) + .add_system(scoreboard_system.system()) .run(); } @@ -25,7 +27,11 @@ struct Ball { struct Brick; struct Wall; -fn setup(command_buffer: &mut CommandBuffer, mut materials: ResMut>) { +struct Scoreboard { + score: usize, +} + +fn setup(command_buffer: &mut CommandBuffer, mut materials: ResMut>, asset_server: Res) { // Add the game's entities to our world let mut builder = command_buffer.build(); builder @@ -52,7 +58,24 @@ fn setup(command_buffer: &mut CommandBuffer, mut materials: ResMut, query: &mut Query>) { + for mut label in query.iter_mut(world) { + label.text = format!("Score: {}", scoreboard.score); + } +} + fn ball_collision_system( command_buffer: &mut CommandBuffer, world: &mut SubWorld, + mut scoreboard: ResMut, ball_query: &mut Query<(Write, Read, Read)>, paddle_query: &mut Query<(Read, Read, Read)>, brick_query: &mut Query<(Read, Read, Read)>, @@ -201,6 +231,7 @@ fn ball_collision_system( collision = collide(ball_position, ball_size, translation.0, sprite.size); if collision.is_some() { + scoreboard.score += 1; command_buffer.delete(brick_entity); } }