diff options
| author | troido <troido@protonmail.com> | 2020-04-13 11:14:23 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-13 11:14:23 +0200 |
| commit | 9bc90bcff5bec4fbb03a568f59e14b1b016e0e44 (patch) | |
| tree | dfb9da2e9b5024aa34005dfe1796046e9b644d8c /src/systems/building.rs | |
| parent | 9d6348a8c8d24bda6c229f72662c8eddc101e92b (diff) | |
doors now use new Build component instead of Loot
Diffstat (limited to 'src/systems/building.rs')
| -rw-r--r-- | src/systems/building.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/systems/building.rs b/src/systems/building.rs new file mode 100644 index 0000000..876554e --- /dev/null +++ b/src/systems/building.rs @@ -0,0 +1,42 @@ + +use specs::{ + ReadStorage, + System, + Join, + Write +}; + +use crate::{ + components::{ + Position, + Build, + Trigger, + TriggerBox + }, + resources::{NewEntities} +}; + + +pub struct Building; +impl <'a> System<'a> for Building{ + type SystemData = ( + ReadStorage<'a, Position>, + Write<'a, NewEntities>, + ReadStorage<'a, TriggerBox>, + ReadStorage<'a, Build> + ); + + fn run(&mut self, (positions, mut new, triggerboxes, builds): Self::SystemData) { + for (position, triggerbox, build) in (&positions, &triggerboxes, &builds).join(){ + for message in triggerbox.messages.iter() { + match message { + Trigger::Build | Trigger::Change => { + // todo: better error handling + new.create(position.pos, &build.obj).unwrap(); + } + _ => {} + } + } + } + } +} |
