From 8d689d784238e24d656acb0662a87b2d66b6e532 Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sun, 10 Aug 2025 16:49:22 -0500 Subject: [PATCH] Wire in the bullet & asteroid destruction events --- src/lib.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 58571fe..3eb4faa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,7 +13,7 @@ use crate::config::{ WINDOW_SIZE, }; use crate::physics::AngularVelocity; -use crate::ship::Ship; +use crate::ship::{Bullet, Ship}; use bevy::prelude::*; use bevy_inspector_egui::InspectorOptions; @@ -71,7 +71,8 @@ impl Plugin for AsteroidPlugin { ) .add_event::() .add_event::() - .add_event::(); + .add_event::() + .add_event::(); app.insert_state(GameState::Playing); } } @@ -98,7 +99,9 @@ fn collision_listener( mut collisions: EventReader, mut ship_writer: EventWriter, mut asteroid_writer: EventWriter, + mut bullet_writer: EventWriter, player: Single>, + bullets: Query<&Bullet>, rocks: Query<&Asteroid>, ) { for event in collisions.read() { @@ -125,7 +128,20 @@ fn collision_listener( } } - // TODO: Bullet-asteroid collisions + // Option 2: Bullet & Asteroid + if bullets.contains(*one) { + if rocks.contains(*two) { + dbg!("Writing AsteroidDestroy & BulletDestroy events"); + asteroid_writer.write(event::AsteroidDestroy(*two)); + bullet_writer.write(event::BulletDestroy(*one)); + } + } else if rocks.contains(*one) { + if bullets.contains(*two) { + dbg!("Writing AsteroidDestroy & BulletDestroy events"); + asteroid_writer.write(event::AsteroidDestroy(*one)); + bullet_writer.write(event::BulletDestroy(*two)); + } + } } } }