From 97e0313c239f0f2b374e99488b09651cc5f443b0 Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sun, 9 Nov 2025 11:14:27 -0600 Subject: [PATCH] Impl a basic scoring system Games have scores, so I need a score counter... I guess. --- src/lib.rs | 1 + src/machinery.rs | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index c22ee57..eaf7d66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -65,6 +65,7 @@ impl Plugin for AsteroidPlugin { objects::ship_impact_listener, physics::collision_listener, machinery::tick_lifetimes, + machinery::update_scoreboard, ) .run_if(in_state(GameState::Playing)), ) diff --git a/src/machinery.rs b/src/machinery.rs index ecc9b1a..08448e5 100644 --- a/src/machinery.rs +++ b/src/machinery.rs @@ -8,7 +8,7 @@ use std::time::Duration; use bevy::prelude::*; -use crate::{WorldSize, events::SpawnAsteroid, objects::AsteroidSize}; +use crate::{WorldSize, events::{AsteroidDestroy, SpawnAsteroid}, objects::AsteroidSize, resources::Score}; /// Asteroid spawning parameters and state. /// @@ -135,3 +135,15 @@ pub fn operate_sparklers(sparklers: Query<(&mut Visibility, &mut Sparkler)>, tim } } } + +/// Event listener for adding score after an asteroid was destroyed +/// +/// Refreshing the HUD element is done by [crate::widgets::operate_ui] (a private function) +pub fn update_scoreboard( + mut destroy_events: EventReader, + mut scoreboard: ResMut, +) { + for _event in destroy_events.read() { + scoreboard.0 += 100; + } +} \ No newline at end of file