From 4f9932074a8f0390d5cb6072b4e419c7ab08ffed Mon Sep 17 00:00:00 2001 From: troido Date: Thu, 2 Apr 2020 14:13:18 +0200 Subject: added flags component, and conditions for building --- src/resources/ground.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/resources/ground.rs') diff --git a/src/resources/ground.rs b/src/resources/ground.rs index a5f4c00..8194a44 100644 --- a/src/resources/ground.rs +++ b/src/resources/ground.rs @@ -8,7 +8,7 @@ use specs::{ }; use crate::{ - components::{Visible, Removed}, + components::{Visible, Removed, Flags, Flag}, Pos }; @@ -28,6 +28,15 @@ impl Ground { .collect() } + pub fn all_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 by_height(&self, pos: &Pos, visibles: &ReadStorage, ignore: &Entity) -> Vec { let mut entities: Vec = self.cells .get(&pos).unwrap_or(&HashSet::new()) @@ -41,4 +50,7 @@ impl Ground { entities } + pub fn flags_on<'a>(&self, pos: Pos, flags: &'a ReadStorage) -> HashSet { + self.all_components_on::(pos, flags).into_iter().fold(HashSet::new(), |a, b| &a | &b.0) + } } -- cgit