diff --git a/character_window/src/abilities/ability_right_side.rs b/character_window/src/abilities/ability_right_side.rs index 8fc273e..8267793 100644 --- a/character_window/src/abilities/ability_right_side.rs +++ b/character_window/src/abilities/ability_right_side.rs @@ -1,3 +1,4 @@ +use std::marker::PhantomData; use std::sync::{Arc, Weak}; use rpg_components::components::ability_slots::AbilitySlots; @@ -11,13 +12,15 @@ use crate::*; use crate::{traits::RightSide, CharacterWindow}; -pub struct AbilityPageRightSide { +pub struct AbilityPageRightSide { snippet: Arc, ability_index: usize, + + ability_marker: PhantomData, } -impl AbilityPageRightSide { +impl AbilityPageRightSide { const ABILITY_BUTTON_NAMES: [&'static str; 4] = [ "first_ability", "second_ability", @@ -59,7 +62,7 @@ impl AbilityPageRightSide { move || { if let Some(menu) = reference.upgrade() { let mut tabs = menu.tabs_mut(); - let abilities = tabs.abilities(); + let abilities = tabs.abilities::(); abilities.right_side.ability_index = index; abilities.update_page()?; @@ -79,7 +82,7 @@ impl AbilityPageRightSide { if selected { engine.on_scene(|scene| { let entity = scene.entity(hero)?; - let abilities = entity.get_component::()?; + let abilities = entity.get_component::>()?; if let Some(book) = abilities.book(index) { let button = weak_button.upgrade().unwrap(); @@ -122,7 +125,7 @@ impl AbilityPageRightSide { let entity = scene.entity_mut(hero)?; let mut multi_mut = entity.multi_mut(); - let abilities = multi_mut.get::()?; + let abilities = multi_mut.get::>()?; if let Some(ability) = abilities.book_mut(index) { let materials = multi_mut.get::()?; @@ -131,7 +134,7 @@ impl AbilityPageRightSide { if let Some(menu) = reference.upgrade() { menu.tabs_mut() - .abilities() + .abilities::() .right_side .refresh(&engine, hero)?; } @@ -151,6 +154,7 @@ impl AbilityPageRightSide { Ok(Self { snippet, ability_index: 0, + ability_marker: PhantomData, }) } @@ -189,7 +193,7 @@ impl AbilityPageRightSide { Ok(()) } - fn update_active_ability(&self, engine: &Engine, abilities: &AbilitySlots) -> Result<()> { + fn update_active_ability(&self, engine: &Engine, abilities: &AbilitySlots) -> Result<()> { let grid: Arc = self.snippet.element("ability_content")?; let (_, rows) = grid.dimensions(); @@ -237,7 +241,7 @@ impl AbilityPageRightSide { } } -impl RightSide for AbilityPageRightSide { +impl RightSide for AbilityPageRightSide { fn refresh(&mut self, engine: &Engine, hero: Entity) -> Result<()> { engine.on_scene(|scene| { let entity = scene.entity(hero)?; @@ -251,7 +255,7 @@ impl RightSide for AbilityPageRightSide { self.update_crafting_count("epic", crafting.count(Rarities::Epic))?; self.update_crafting_count("legendary", crafting.count(Rarities::Legendary))?; - let abilities = entity.get_component::()?; + let abilities = entity.get_component::>()?; for (index, name) in Self::ABILITY_BUTTON_NAMES.iter().enumerate() { self.update_ability_icon(name, abilities.book(index).map(|book| book.icon()))?; diff --git a/character_window/src/abilities/content.rs b/character_window/src/abilities/content.rs index 3510a27..e2ef6f7 100644 --- a/character_window/src/abilities/content.rs +++ b/character_window/src/abilities/content.rs @@ -15,7 +15,7 @@ use crate::{ use super::AbilityPage; -impl Content { +impl Content { fn show_addon_tooltip( engine: &Arc, hero: Entity, @@ -25,7 +25,7 @@ impl Content { ) -> Result<()> { engine.on_scene(|scene| { let entity = scene.entity(hero)?; - let inventory = entity.get_component::()?; + let inventory = entity.get_component::>()?; let target_x = x + w as i32; let target_y = y; @@ -46,14 +46,14 @@ impl Content { engine: &Arc, hero: Entity, addon_index: usize, - ability_page: &AbilityPage, + ability_page: &AbilityPage, ) -> Result<()> { engine.on_scene_mut(|scene| { let entity = scene.entity_mut(hero)?; let mut multi_mut = entity.multi_mut(); - let inventory = multi_mut.get::()?; - let abilities = multi_mut.get::()?; + let inventory = multi_mut.get::>()?; + let abilities = multi_mut.get::>()?; if let Some(book) = abilities.book_mut(ability_page.right_side.selected_ability()) { if book.has_free_addon_slots() { @@ -67,7 +67,7 @@ impl Content { } } -impl ContentUpdate for Content { +impl ContentUpdate for Content { fn update(&mut self, engine: &Arc, hero: Entity) -> Result<()> { let reference = self.reference.clone(); @@ -80,13 +80,15 @@ impl ContentUpdate for Content { move |controller_button| { if let ControllerButton::X = controller_button { - CharacterWindow::salvage_from_inventory(&engine, hero, |inventory| { - inventory.remove_addon(index) - })?; + CharacterWindow::salvage_from_inventory::( + &engine, + hero, + |inventory| inventory.remove_addon(index), + )?; if let Some(menu) = reference.upgrade() { let mut tabs = menu.tabs_mut(); - let abilities = tabs.abilities(); + let abilities = tabs.abilities::(); abilities.update_page()?; } @@ -145,19 +147,19 @@ impl ContentUpdate for Content { } } -impl Content { +impl Content> { fn equip_book( engine: &Arc, hero: Entity, book_index: usize, - ability_page: &AbilityPage, + ability_page: &AbilityPage, ) -> Result<()> { engine.on_scene_mut(|scene| { let entity = scene.entity_mut(hero)?; let mut multi_mut = entity.multi_mut(); - let inventory = multi_mut.get::()?; - let abilitiy_slots = multi_mut.get::()?; + let inventory = multi_mut.get::>()?; + let abilitiy_slots = multi_mut.get::>()?; if let Some(old_book) = abilitiy_slots.insert_book( inventory.remove_book(book_index), @@ -179,7 +181,7 @@ impl Content { ) -> Result<()> { engine.on_scene(|scene| { let entity = scene.entity(hero)?; - let inventory = entity.get_component::()?; + let inventory = entity.get_component::>()?; let statistics = entity.get_component::()?; let target_x = x + w as i32; @@ -191,9 +193,9 @@ impl Content { gui.enable()?; let window = reference.upgrade().unwrap(); - let abilities = entity.get_component::()?; + let abilities = entity.get_component::>()?; - match abilities.book(window.tabs().abilities().right_side.selected_ability()) { + match abilities.book(window.tabs().abilities::().right_side.selected_ability()) { Some(selected_book) => { let button_pos = gui.position_extent(); @@ -222,7 +224,7 @@ impl Content { } } -impl ContentUpdate for Content { +impl ContentUpdate for Content> { fn update(&mut self, engine: &Arc, hero: Entity) -> Result<()> { let reference = self.reference.clone(); @@ -235,13 +237,15 @@ impl ContentUpdate for Content { move |controller_button| { if let ControllerButton::X = controller_button { - CharacterWindow::salvage_from_inventory(&engine, hero, |inventory| { - inventory.remove_book(index) - })?; + CharacterWindow::salvage_from_inventory::( + &engine, + hero, + |inventory| inventory.remove_book(index), + )?; if let Some(menu) = reference.upgrade() { let mut tabs = menu.tabs_mut(); - let abilities = tabs.abilities(); + let abilities = tabs.abilities::(); abilities.update_page()?; } diff --git a/character_window/src/abilities/mod.rs b/character_window/src/abilities/mod.rs index 28d08bd..2f8007a 100644 --- a/character_window/src/abilities/mod.rs +++ b/character_window/src/abilities/mod.rs @@ -16,7 +16,7 @@ use super::{ }; use crate::*; -pub struct AbilityPage { +pub struct AbilityPage { close: Weak