From f0153eefd580ec443b380504303620a61f24630b Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 3 Feb 2020 16:13:58 +0100 Subject: refactored systems in their own file each --- src/systems/draw.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/systems/draw.rs (limited to 'src/systems/draw.rs') diff --git a/src/systems/draw.rs b/src/systems/draw.rs new file mode 100644 index 0000000..82400e3 --- /dev/null +++ b/src/systems/draw.rs @@ -0,0 +1,31 @@ + +use specs::{ + ReadStorage, + Write, + System, + Join +}; + +use super::super::components::{ + Position, + Visible +}; + +use super::super::resources::{ + TopView +}; + + +pub struct Draw; +impl <'a> System<'a> for Draw { + + type SystemData = (ReadStorage<'a, Position>, ReadStorage<'a, Visible>, Write<'a, TopView>); + + fn run(&mut self, (pos, vis, mut view): Self::SystemData) { + view.cells.clear(); + for (pos, vis) in (&pos, &vis).join(){ + view.cells.entry(*pos).or_insert(Vec::new()).push(vis.clone()); + view.cells.get_mut(pos).unwrap().sort_by(|a, b| b.height.partial_cmp(&a.height).unwrap()); + } + } +} -- cgit