diff options
| author | troido <troido@protonmail.com> | 2020-02-09 00:49:57 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-02-09 00:49:57 +0100 |
| commit | d46bff6850237064cbfa90a54b4aca22170bbaf7 (patch) | |
| tree | 100177d22fcc5b6950b980c59eaafa193ba2d144 /src/systems/registernew.rs | |
| parent | 624b3a94b498d7410049d2227568534c118a9f7d (diff) | |
cleanup/rename makefloor to registernew
Diffstat (limited to 'src/systems/registernew.rs')
| -rw-r--r-- | src/systems/registernew.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/systems/registernew.rs b/src/systems/registernew.rs new file mode 100644 index 0000000..c6b18fa --- /dev/null +++ b/src/systems/registernew.rs @@ -0,0 +1,37 @@ + +use std::collections::HashSet; + +use specs::{ + ReadStorage, + Write, + Entities, + System, + Join +}; + +use crate::components::{ + Position, + New +}; + +use crate::resources::{ + Ground +}; + + +#[derive(Default)] +pub struct RegisterNew; +impl <'a> System<'a> for RegisterNew { + type SystemData = ( + Entities<'a>, + Write<'a, Ground>, + ReadStorage<'a, Position>, + ReadStorage<'a, New>, + ); + fn run(&mut self, (entities, mut ground, positions, new): Self::SystemData) { + for (ent, pos, _new) in (&entities, &positions, &new).join() { + ground.cells.entry(pos.pos).or_insert(HashSet::new()).insert(ent); + } + } +} + |
