From 9bc90bcff5bec4fbb03a568f59e14b1b016e0e44 Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 13 Apr 2020 11:14:23 +0200 Subject: doors now use new Build component instead of Loot --- src/systems/building.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/systems/building.rs (limited to 'src/systems/building.rs') 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(); + } + _ => {} + } + } + } + } +} -- cgit