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::{traits::RightSide, CharacterWindow}; 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( engine: &Arc, reference: &Weak, hero: Entity, ) -> Result { let snippet = GuiSnippet::from_str( engine.gui_handler(), include_str!("../../resources/abilities/right_side.xml"), )?; let color_settings = &engine .scene() .resources .get::() .rarity_color_settings; Self::rarity_icon_background(&snippet, "common", color_settings.common)?; Self::rarity_icon_background(&snippet, "uncommon", color_settings.uncommon)?; Self::rarity_icon_background(&snippet, "magical", color_settings.magical)?; Self::rarity_icon_background(&snippet, "rare", color_settings.rare)?; Self::rarity_icon_background(&snippet, "epic", color_settings.epic)?; Self::rarity_icon_background(&snippet, "legendary", color_settings.legendary)?; for (index, name) in Self::ABILITY_BUTTON_NAMES.iter().enumerate() { let button: Arc