enemy can drop key

This commit is contained in:
2025-03-13 11:05:56 +01:00
parent 8946289ac2
commit c358108c56
7 changed files with 104 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
use crate::tb_entities::EnemySpawn;
use crate::{keys::KeySpawn, tb_entities::EnemySpawn};
use bevy::prelude::*;
#[derive(Event, Reflect)]
@@ -6,10 +6,6 @@ pub struct Hit {
pub damage: u32,
}
// TODO: add actual keys
#[derive(Event, Reflect)]
pub struct KeyCollected;
#[derive(Component, Reflect)]
struct Hp(i32);
@@ -23,10 +19,14 @@ fn init(mut commands: Commands, query: Query<Entity, (With<EnemySpawn>, Without<
}
}
fn on_hit(trigger: Trigger<Hit>, mut commands: Commands, mut query: Query<&mut Hp>) {
fn on_hit(
trigger: Trigger<Hit>,
mut commands: Commands,
mut query: Query<(&mut Hp, &Transform, &EnemySpawn)>,
) {
let Hit { damage } = trigger.event();
let Ok(mut hp) = query.get_mut(trigger.entity()) else {
let Ok((mut hp, transform, enemy)) = query.get_mut(trigger.entity()) else {
return;
};
@@ -36,6 +36,9 @@ fn on_hit(trigger: Trigger<Hit>, mut commands: Commands, mut query: Query<&mut H
if hp.0 <= 0 {
commands.entity(trigger.entity()).despawn_recursive();
commands.trigger(KeyCollected);
if enemy.has_key {
commands.trigger(KeySpawn(transform.translation));
}
}
}