summaryrefslogtreecommitdiff
path: root/src/systems
diff options
context:
space:
mode:
Diffstat (limited to 'src/systems')
-rw-r--r--src/systems/take.rs11
-rw-r--r--src/systems/useitem.rs10
-rw-r--r--src/systems/view.rs2
3 files changed, 14 insertions, 9 deletions
diff --git a/src/systems/take.rs b/src/systems/take.rs
index 9eb76e7..5a86269 100644
--- a/src/systems/take.rs
+++ b/src/systems/take.rs
@@ -14,6 +14,7 @@ use crate::components::{
Position,
Removed,
Inventory,
+ inventory::InventoryEntry,
Item,
Visible
};
@@ -50,7 +51,11 @@ impl <'a> System<'a> for Take {
}
for ent in ents {
if let Some(item) = items.get(ent) {
- inventory.items.insert(0, (item.clone(), false));
+ inventory.items.insert(0, InventoryEntry{
+ itemid: item.0.clone(),
+ item: new.encyclopedia.get_item(&item.0).unwrap(),
+ is_equipped: false
+ });
if let Err(msg) = removed.insert(ent, Removed) {
println!("{:?}", msg);
}
@@ -62,8 +67,8 @@ impl <'a> System<'a> for Take {
if *rank >= inventory.items.len() {
return
}
- let (item, _is_equipped) = inventory.items.remove(*rank);
- let _ = new.create(position.pos, &item.ent);
+ let entry = inventory.items.remove(*rank);
+ let _ = new.create(position.pos, &entry.item.ent);
}
_ => {}
}
diff --git a/src/systems/useitem.rs b/src/systems/useitem.rs
index 8763843..605f083 100644
--- a/src/systems/useitem.rs
+++ b/src/systems/useitem.rs
@@ -21,7 +21,7 @@ use crate::{
Flags
},
resources::{NewEntities, Ground},
- components::item::ItemAction::{None, Build, Eat, Equip},
+ item::ItemAction::{None, Build, Eat, Equip},
controls::Control,
};
@@ -44,7 +44,7 @@ impl <'a> System<'a> for Use {
match &controller.control {
Control::Use(rank) => {
if let Some(entry) = inventory.items.get_mut(*rank) {
- match &entry.0.action {
+ 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){
@@ -59,13 +59,13 @@ impl <'a> System<'a> for Use {
Equip(equippable) => {
let slot = equippable.slot;
for otherentry in inventory.items.iter_mut() {
- if let Equip(other) = &otherentry.0.action {
+ if let Equip(other) = &otherentry.item.action {
if other.slot == slot {
- otherentry.1 = false;
+ otherentry.is_equipped = false;
}
}
}
- inventory.items[*rank].1 = true;
+ inventory.items[*rank].is_equipped = true;
}
None => {}
}
diff --git a/src/systems/view.rs b/src/systems/view.rs
index 4419203..f1641bd 100644
--- a/src/systems/view.rs
+++ b/src/systems/view.rs
@@ -59,7 +59,7 @@ impl <'a> System<'a> for View {
updates.change = Some(changes.clone());
}
if let Some(inventory) = inventories.get(ent){
- updates.inventory = Some(inventory.items.iter().map(|(item, _equipped)| item.name.clone()).collect());
+ updates.inventory = Some(inventory.items.iter().map(|entry| entry.item.name.clone()).collect());
}
if let Some(health) = healths.get(ent){
updates.health = Some((health.health, health.maxhealth));