Fix monster death logic
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
cf4e818094
commit
ecaf448e90
1 changed files with 5 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue