use std::marker::PhantomData; use std::sync::{Arc, Weak}; use rpg_components::components::ability_slots::AbilitySlots; use rpg_components::components::crafting_materials::CraftingMaterials; use rpg_components::components::inventory::Storable; use rpg_components::components::statistics::Statistics; use rpg_components::config::items::ItemSettings; use rpg_components::items::Rarities; use crate::*; use crate::{CharacterWindow, traits::RightSide}; pub struct AbilityPageRightSide { snippet: Arc, ability_index: usize, ability_marker: PhantomData, } impl AbilityPageRightSide { const ABILITY_BUTTON_NAMES: [&'static str; 4] = [ "first_ability", "second_ability", "third_ability", "fourth_ability", ]; pub fn new(world: &mut World, hero: Entity, reference: &Weak) -> Result { let snippet = GuiSnippet::from_str( world, include_str!("../../resources/abilities/right_side.xml"), )?; let color_settings = world .resources .get::() .rarity_color_settings .clone(); let (gui_handler, engine_settings, context): ( &mut GuiHandler, &mut EngineSettings, &mut Context, ) = world.resources.get_mut()?; Self::rarity_icon_background(gui_handler, &snippet, "common", color_settings.common)?; Self::rarity_icon_background(gui_handler, &snippet, "uncommon", color_settings.uncommon)?; Self::rarity_icon_background(gui_handler, &snippet, "magical", color_settings.magical)?; Self::rarity_icon_background(gui_handler, &snippet, "rare", color_settings.rare)?; Self::rarity_icon_background(gui_handler, &snippet, "epic", color_settings.epic)?; Self::rarity_icon_background(gui_handler, &snippet, "legendary", color_settings.legendary)?; for (index, name) in Self::ABILITY_BUTTON_NAMES.iter().enumerate() { let button: Arc