From 4718cfdc7c2bf67d2389ca18ab035fe5a0887ff0 Mon Sep 17 00:00:00 2001 From: troido Date: Sun, 23 Feb 2020 23:58:55 +0100 Subject: don't draw removed entities --- src/systems/view.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/systems') diff --git a/src/systems/view.rs b/src/systems/view.rs index 158a187..cff24fa 100644 --- a/src/systems/view.rs +++ b/src/systems/view.rs @@ -54,14 +54,14 @@ impl <'a> System<'a> for View { let has_changed: bool = !changed.is_empty(); let mut changes: Vec<(Pos, Vec)> = Vec::new(); for pos in changed { - changes.push((pos, cell_sprites(ground.components_on(pos, &visible)))); + changes.push((pos, cell_sprites(ground.components_on(pos, &visible, &removed)))); } output.output.clear(); for (ent, player, pos) in (&entities, &players, &positions).join() { let mut updates = WorldMessage::default(); if new.get(ent).is_some() { - let (values, mapping) = draw_room(&ground, (size.width, size.height), &visible); + let (values, mapping) = draw_room(&ground, (size.width, size.height), &visible, &removed); let field = FieldMessage{ width: size.width, height: size.height, @@ -98,14 +98,14 @@ fn cell_sprites(mut visibles: Vec<&Visible>) -> Vec { visibles.iter().map(|vis| vis.sprite.clone()).collect() } -fn draw_room(ground: &Read, (width, height): (i64, i64), visible: &ReadStorage) -> (Vec, Vec>){ +fn draw_room(ground: &Read, (width, height): (i64, i64), visible: &ReadStorage, removals: &ReadStorage) -> (Vec, Vec>){ let size = width * height; let mut values :Vec = Vec::with_capacity(size as usize); let mut mapping: Vec> = Vec::new(); for y in 0..height { for x in 0..width { - let sprites: Vec = cell_sprites(ground.components_on(Pos{x, y}, visible)); + let sprites: Vec = cell_sprites(ground.components_on(Pos{x, y}, visible, removals)); values.push( match mapping.iter().position(|x| x == &sprites) { Some(index) => { -- cgit