use rpg_components::{ components::{ attributes::Attributes, inventory::{Inventory, Storable}, item_slots::ItemSlotContainer, statistics::Statistics, }, config::{attributes::AttributeSettings, items::ItemSettings}, items::{Item, ItemAffix, ItemSystem, Jewel}, }; use crate::*; use std::{ cmp::Reverse, sync::{Arc, Weak}, }; use crate::CharacterWindow; use super::super::traits::*; pub enum ReferenceItemSource { Inventory(usize), Slots(Option), } pub enum ReferenceObject { Item { item: Item, source: ReferenceItemSource, }, Jewel { jewel: Jewel, index: usize, }, } #[derive(Default)] pub struct LowerJewels { pub jewels: [Option<(Jewel, usize)>; 3], } pub struct JewelRightSide { snippet: Arc, } impl JewelRightSide { pub fn new( engine: &Arc, file: &str, hero: Entity, reference: &Weak, ) -> Result { let snippet = GuiSnippet::from_str(engine.gui_handler(), file)?; let combine: Arc