From 170741fe959d30ee43ce689fd5fbae725cc1dae4 Mon Sep 17 00:00:00 2001 From: troido Date: Thu, 5 Mar 2020 12:50:25 +0100 Subject: equipent now kinda works --- src/systems/useitem.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/systems/useitem.rs') diff --git a/src/systems/useitem.rs b/src/systems/useitem.rs index 89a301c..7d37322 100644 --- a/src/systems/useitem.rs +++ b/src/systems/useitem.rs @@ -16,10 +16,11 @@ use crate::{ Inventory, AttackInbox, AttackMessage, - AttackType + AttackType, + Equipment }, resources::{NewEntities}, - components::item::ItemAction::{None, Build, Eat}, + components::item::ItemAction::{None, Build, Eat, Equip}, controls::Control, }; @@ -32,10 +33,11 @@ impl <'a> System<'a> for Use { ReadStorage<'a, Position>, WriteStorage<'a, Inventory>, Write<'a, NewEntities>, - WriteStorage<'a, AttackInbox> + WriteStorage<'a, AttackInbox>, + WriteStorage<'a, Equipment> ); - fn run(&mut self, (entities, controllers, positions, mut inventories, mut new, mut attacked): Self::SystemData) { + fn run(&mut self, (entities, controllers, positions, mut inventories, mut new, mut attacked, mut equipments): Self::SystemData) { for (ent, controller, position, inventory) in (&entities, &controllers, &positions, &mut inventories).join(){ match &controller.control { Control::Use(rank) => { @@ -49,6 +51,13 @@ impl <'a> System<'a> for Use { AttackInbox::add_message(&mut attacked, ent, AttackMessage{typ: AttackType::Heal(*health_diff), attacker: Option::None}); inventory.items.remove(*rank); } + Equip(equippable) => { + if let Some(equipment) = equipments.get_mut(ent) { + if equipment.equipment.contains_key(&equippable.slot) { + equipment.equipment.insert(equippable.slot, Some(equippable.clone())); + } + } + } None => {} } } -- cgit