summaryrefslogtreecommitdiff
path: root/src/systems/building.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-13 12:03:44 +0200
committertroido <troido@protonmail.com>2020-04-13 12:03:44 +0200
commit88d3414f523d01a0109604103e6aeb8b68a7fa20 (patch)
treea102e4fa9d4b7acd164830295944e973aa4d6dac /src/systems/building.rs
parent9bc90bcff5bec4fbb03a568f59e14b1b016e0e44 (diff)
grow is now also using build trigger/component
Diffstat (limited to 'src/systems/building.rs')
-rw-r--r--src/systems/building.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/systems/building.rs b/src/systems/building.rs
index 876554e..8459144 100644
--- a/src/systems/building.rs
+++ b/src/systems/building.rs
@@ -7,13 +7,15 @@ use specs::{
};
use crate::{
+ ComponentWrapper,
components::{
Position,
Build,
Trigger,
- TriggerBox
+ TriggerBox,
+ OwnTime
},
- resources::{NewEntities}
+ resources::{NewEntities},
};
@@ -23,16 +25,21 @@ impl <'a> System<'a> for Building{
ReadStorage<'a, Position>,
Write<'a, NewEntities>,
ReadStorage<'a, TriggerBox>,
- ReadStorage<'a, Build>
+ ReadStorage<'a, Build>,
+ ReadStorage<'a, OwnTime>
);
- fn run(&mut self, (positions, mut new, triggerboxes, builds): Self::SystemData) {
- for (position, triggerbox, build) in (&positions, &triggerboxes, &builds).join(){
+ fn run(&mut self, (positions, mut new, triggerboxes, builds, own_times): Self::SystemData) {
+ for (position, triggerbox, build, own_time) in (&positions, &triggerboxes, &builds, (&own_times).maybe()).join(){
for message in triggerbox.messages.iter() {
match message {
Trigger::Build | Trigger::Change => {
// todo: better error handling
- new.create(position.pos, &build.obj).unwrap();
+ let mut preent = new.encyclopedia.construct(&build.obj).unwrap();
+ if let Some(time) = own_time {
+ preent.push(ComponentWrapper::OwnTime(time.clone()));
+ }
+ new.to_build.push((position.pos, preent));
}
_ => {}
}