diff --git a/character_window/src/inventory/item_right_side.rs b/character_window/src/inventory/item_right_side.rs index c5329f2..0f3959f 100644 --- a/character_window/src/inventory/item_right_side.rs +++ b/character_window/src/inventory/item_right_side.rs @@ -1,5 +1,6 @@ use anyhow::Result; use assetpath::AssetPath; +use ecs::*; use rpg_components::{ components::{ attributes::Attributes, character_status::CharacterStatus, inventory::Inventory, @@ -293,12 +294,12 @@ mod macros { false } }) { - let socket_object = world.resources.get_mut::>(); + let socket_object: &mut ReferenceObject = world.resources.get_mut()?; - *socket_object = Some(ReferenceObject::Item { + *socket_object = ReferenceObject::Item { item, source: ReferenceItemSource::Slots(None), - }); + }; empty_affixes_found = true; } @@ -370,8 +371,19 @@ mod macros { let (entity, resources) = world.entity_resources($hero)?; - let items = multi_mut.get::()?; - let inventory = multi_mut.get::>()?; + let ( + items, + inventory, + statistics, + attributes, + status + ): ( + &mut ItemSlotContainer, + &mut Inventory, + &mut Statistics, + &mut Attributes, + &mut CharacterStatus + ) = entity.get_components_mut()?; if let Some($item) = items.[<$item>]($index) { inventory.add_item($item.clone()); @@ -381,17 +393,12 @@ mod macros { if found_item { items.[]($index)?; - let statistics = multi_mut.get::()?; - let attributes = multi_mut.get::()?; - statistics.update( attributes, resources.get::(), (&*items, resources.get::()) ); - let status = multi_mut.get::()?; - if status.current_health > statistics.health { status.current_health = statistics.health.clone(); } @@ -427,12 +434,12 @@ mod macros { false } }) { - let socket_object = world.resources.get_mut::>(); + let socket_object: &mut ReferenceObject = world.resources.get_mut()?; - *socket_object = Some(ReferenceObject::Item { + *socket_object = ReferenceObject::Item { item, source: ReferenceItemSource::Slots(Some($index)), - }); + }; empty_affixes_found = true; }