From ecaf448e90a261ccbd28289f719dad5e1fcfe762 Mon Sep 17 00:00:00 2001 From: Alex Page Date: Thu, 3 Feb 2022 01:39:49 -0500 Subject: [PATCH] Fix monster death logic --- src/systems/monster_ai.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/systems/monster_ai.rs b/src/systems/monster_ai.rs index e7f5906..32061dd 100644 --- a/src/systems/monster_ai.rs +++ b/src/systems/monster_ai.rs @@ -17,7 +17,7 @@ pub fn run(world: &mut World, resources: &mut Resources) { .cloned(); if let Some(player_pos) = player_position { - let mut has_died = None; + let mut to_kill: Vec = Vec::new(); for (entity, (monster, position, renderable)) in &mut world.query::<(&mut Monster, &mut Position, &mut Renderable)>() { @@ -60,7 +60,7 @@ pub fn run(world: &mut World, resources: &mut Resources) { monster.kind, &resources.sound_effects, )); - has_died = Some(entity); + to_kill.push(entity); } } else { let tile = resources.map.get_tile_at_mut(destination); @@ -71,8 +71,9 @@ pub fn run(world: &mut World, resources: &mut Resources) { monster.kind, &resources.sound_effects, )); + resources.stats.add_score(1); *tile = TileType::Floor; - has_died = Some(entity); + to_kill.push(entity); } _ => { resources.map.clear_tile_content_at(Point::from(*position)); @@ -88,7 +89,7 @@ pub fn run(world: &mut World, resources: &mut Resources) { } } - if let Some(e) = has_died { + for e in to_kill { let _ = world.despawn(e); } }