Fix monster death logic
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Alex Page 2022-02-03 01:39:49 -05:00
parent cf4e818094
commit ecaf448e90

View file

@ -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<Entity> = 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);
}
}