diff options
| author | troido <troido@protonmail.com> | 2020-04-05 20:04:33 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-05 20:04:33 +0200 |
| commit | 48c24ec8b011d081550dc78329cbe61de67b30e9 (patch) | |
| tree | d2d700897dc5ba3d0f52e8a1cd57c0f4880272fd /src/systems | |
| parent | 84c70cee089b72720a85d285ee0437b65be298b9 (diff) | |
items are now mostly replaced by itemids, with a mapping to the item in the encyclopedia
Diffstat (limited to 'src/systems')
| -rw-r--r-- | src/systems/take.rs | 11 | ||||
| -rw-r--r-- | src/systems/useitem.rs | 10 | ||||
| -rw-r--r-- | src/systems/view.rs | 2 |
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)); |
