summaryrefslogtreecommitdiff
path: root/src/systems/building.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-13 11:14:23 +0200
committertroido <troido@protonmail.com>2020-04-13 11:14:23 +0200
commit9bc90bcff5bec4fbb03a568f59e14b1b016e0e44 (patch)
treedfb9da2e9b5024aa34005dfe1796046e9b644d8c /src/systems/building.rs
parent9d6348a8c8d24bda6c229f72662c8eddc101e92b (diff)
doors now use new Build component instead of Loot
Diffstat (limited to 'src/systems/building.rs')
-rw-r--r--src/systems/building.rs42
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();
+ }
+ _ => {}
+ }
+ }
+ }
+ }
+}