diff options
| author | troido <troido@protonmail.com> | 2020-05-19 10:40:22 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-05-19 10:40:22 +0200 |
| commit | 0d382ea19f8f964c35761f6a3ff80bc9bfc25375 (patch) | |
| tree | 051abe24e22edd6aa0c6b9a9efbd03b8c47ce260 /src/systems | |
| parent | 78b079df5a26ce94142737605ec36ddde8310336 (diff) | |
add room build permissions to rooms
Diffstat (limited to 'src/systems')
| -rw-r--r-- | src/systems/useitem.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/systems/useitem.rs b/src/systems/useitem.rs index 485b1da..a560c18 100644 --- a/src/systems/useitem.rs +++ b/src/systems/useitem.rs @@ -20,7 +20,7 @@ use crate::{ AttackType, Flags }, - resources::{NewEntities, Ground}, + resources::{NewEntities, Ground, RoomPermissions}, item::ItemAction::{None, Build, Eat, Equip}, controls::Control, }; @@ -36,10 +36,11 @@ impl <'a> System<'a> for Use { Write<'a, NewEntities>, WriteStorage<'a, AttackInbox>, Read<'a, Ground>, - ReadStorage<'a, Flags> + ReadStorage<'a, Flags>, + Read<'a, RoomPermissions> ); - fn run(&mut self, (entities, controllers, positions, mut inventories, mut new, mut attacked, ground, flags): Self::SystemData) { + fn run(&mut self, (entities, controllers, positions, mut inventories, mut new, mut attacked, ground, flags, roompermissions): Self::SystemData) { for (ent, controller, position, inventory) in (&entities, &controllers, &positions, &mut inventories).join(){ match &controller.control { Control::Use(rank) => { @@ -47,7 +48,7 @@ impl <'a> System<'a> for Use { match &entry.item.action { Build(template, required_flags, blocking_flags) => { let ground_flags = ground.flags_on(position.pos, &flags); - if required_flags.is_subset(&ground_flags) && blocking_flags.is_disjoint(&ground_flags){ + if roompermissions.build && required_flags.is_subset(&ground_flags) && blocking_flags.is_disjoint(&ground_flags){ new.create(position.pos, &template).unwrap(); inventory.items.remove(*rank); } |
