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/resources/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/resources') diff --git a/src/resources/mod.rs b/src/resources/mod.rs index d3777e5..07669c4 100644 --- a/src/resources/mod.rs +++ b/src/resources/mod.rs @@ -12,7 +12,7 @@ use crate::{ RoomId, Result, Template, - components::Visible, + components::{Visible, Removed}, playerstate::RoomPos }; @@ -43,8 +43,14 @@ pub struct Ground { pub cells: HashMap> } impl Ground { - pub fn components_on<'a, C: Component>(&self, pos: Pos, component_type: &'a ReadStorage) -> Vec<&'a C> { - self.cells.get(&pos).unwrap_or(&HashSet::new()).iter().filter_map(|e| component_type.get(*e)).collect() + pub fn components_on<'a, C: Component>(&self, pos: Pos, component_type: &'a ReadStorage, removals: &'a ReadStorage) -> Vec<&'a C> { + self.cells + .get(&pos) + .unwrap_or(&HashSet::new()) + .iter() + .filter(|e| !removals.contains(**e)) + .filter_map(|e| component_type.get(*e)) + .collect() } pub fn by_height(&self, pos: &Pos, visibles: &ReadStorage, ignore: &Entity) -> Vec { -- cgit