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( commands: &mut Commands, gui_handler: &mut GuiHandler, item_settings: &mut ItemSettings, engine_settings: &mut EngineSettings, context: &mut Context, hero: Entity, reference: &Weak, ) -> Result { let snippet = GuiSnippet::from_str( commands, gui_handler, include_str!("../../resources/abilities/right_side.xml"), )?; let color_settings = item_settings.rarity_color_settings.clone(); 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