diff options
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(); + } + _ => {} + } + } + } + } +} |
