enemy can drop key
This commit is contained in:
19
src/npc.rs
19
src/npc.rs
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user