diff --git a/character_window/Cargo.toml b/character_window/Cargo.toml index c648dfd..d89f842 100644 --- a/character_window/Cargo.toml +++ b/character_window/Cargo.toml @@ -9,5 +9,6 @@ paste = { workspace = true } downcast-rs = { workspace = true } engine = { workspace = true } +ecs = { workspace = true } rpg_components = { path = "../rpg_components" } assetpath.workspace = true diff --git a/character_window/src/abilities/ability_right_side.rs b/character_window/src/abilities/ability_right_side.rs index 3e236b0..db0259a 100644 --- a/character_window/src/abilities/ability_right_side.rs +++ b/character_window/src/abilities/ability_right_side.rs @@ -34,16 +34,18 @@ impl AbilityPageRightSide { include_str!("../../resources/abilities/right_side.xml"), )?; - let mut resources = world.resources.multi_mut(); - let gui_handler = resources.get::(); - let engine_settings = resources.get::(); - let context = resources.get::(); - - let color_settings = resources + 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)?; @@ -98,7 +100,7 @@ impl AbilityPageRightSide { book.create_tooltip(world, statistics, (target_x, target_y))?; gui.enable(world)?; gui.perform_single_check( - world.resources.get_mut::(), + world.resources.get_mut()?, button_pos.0, button_pos.1, )?; @@ -120,7 +122,6 @@ impl AbilityPageRightSide { move |world, button| match button { ControllerButton::Y => { let entity = world.entity_mut(hero)?; - let mut multi_mut = entity.multi_mut(); let abilities = multi_mut.get::>()?; @@ -226,7 +227,7 @@ impl AbilityPageRightSide { let addon_type: Arc { let crafting = entity.get_component::()?; - let gui_handler = world.resources.get_mut::(); + let gui_handler: &mut GuiHandler = world.resources.get_mut()?; self.update_crafting_count(gui_handler, "common", crafting.count(Rarities::Common))?; self.update_crafting_count(gui_handler, "uncommon", crafting.count(Rarities::Uncommon))?; diff --git a/character_window/src/abilities/content.rs b/character_window/src/abilities/content.rs index 8c9ce00..079931b 100644 --- a/character_window/src/abilities/content.rs +++ b/character_window/src/abilities/content.rs @@ -32,7 +32,7 @@ impl Content { let addon = inventory.addon_at(addon_index); let gui = addon.create_tooltip(world, (target_x, target_y))?; gui.enable(world)?; - gui.perform_single_check(world.resources.get_mut::(), x, y)?; + gui.perform_single_check(world.resources.get_mut()?, x, y)?; let window = reference.upgrade().unwrap(); window.add_tooltip(format!("addon_{addon_index}"), gui); @@ -47,7 +47,6 @@ impl Content { ability_page: &AbilityPage, ) -> Result<()> { let entity = world.entity_mut(hero)?; - let mut multi_mut = entity.multi_mut(); let inventory = multi_mut.get::>()?; let abilities = multi_mut.get::>()?; @@ -68,7 +67,7 @@ impl ContentUpdate for Content { let reference = self.reference.clone(); self.update_base(world, |world, button, t, index| { - button.set_icon(world.resources.get_mut::(), &t.icon())?; + button.set_icon(world.resources.get_mut()?, &t.icon())?; button.set_custom_callback({ let reference = reference.clone(); @@ -136,7 +135,7 @@ impl ContentUpdate for Content { } fn select(&self, world: &mut World) -> Result<()> { - self.select(world.resources.get_mut::()) + self.select(world.resources.get_mut()?) } } @@ -148,7 +147,6 @@ impl Content> { ability_page: &AbilityPage, ) -> Result<()> { let entity = world.entity_mut(hero)?; - let mut multi_mut = entity.multi_mut(); let inventory = multi_mut.get::>()?; let abilitiy_slots = multi_mut.get::>()?; @@ -194,17 +192,12 @@ impl Content> { let compare_gui = selected_book.create_tooltip(world, statistics, (target_x, target_y))?; compare_gui.enable(world)?; - gui.perform_double_check( - &compare_gui, - world.resources.get_mut::(), - x, - 2, - )?; + gui.perform_double_check(&compare_gui, world.resources.get_mut()?, x, 2)?; window.add_tooltip("active_book", compare_gui); } None => { - gui.perform_single_check(world.resources.get_mut::(), x, y)?; + gui.perform_single_check(world.resources.get_mut()?, x, y)?; } } @@ -219,7 +212,7 @@ impl ContentUpdate for Content> { let reference = self.reference.clone(); self.update_base(world, |world, button, t, index| { - button.set_icon(world.resources.get_mut::(), &t.icon())?; + button.set_icon(world.resources.get_mut()?, &t.icon())?; button.set_custom_callback({ let reference = reference.clone(); @@ -288,6 +281,6 @@ impl ContentUpdate for Content> { } fn select(&self, world: &mut World) -> Result<()> { - self.select(world.resources.get_mut::()) + self.select(world.resources.get_mut()?) } } diff --git a/character_window/src/abilities/mod.rs b/character_window/src/abilities/mod.rs index 999e819..a455330 100644 --- a/character_window/src/abilities/mod.rs +++ b/character_window/src/abilities/mod.rs @@ -75,10 +75,11 @@ impl AbilityPage { include_str!("../../resources/abilities/ability_tooltip.xml"), )?; - let mut resources = world.resources.multi_mut(); - let gui_handler = resources.get::(); - let engine_settings = resources.get::(); - let context = resources.get::(); + let (gui_handler, engine_settings, context): ( + &mut GuiHandler, + &mut EngineSettings, + &mut Context, + ) = world.resources.get_mut()?; let equip: Arc { include_str!("../../resources/abilities/addon_tooltip.xml"), )?; - let mut resources = world.resources.multi_mut(); - let gui_handler = resources.get::(); - let engine_settings = resources.get::(); - let context = resources.get::(); + let (gui_handler, engine_settings, context): ( + &mut GuiHandler, + &mut EngineSettings, + &mut Context, + ) = world.resources.get_mut()?; let equip: Arc { if mode.content().is_empty() { if let Some(close) = self.close.upgrade() { - close.select(world.resources.get_mut::())?; + close.select(world.resources.get_mut()?)?; } } diff --git a/character_window/src/character/mod.rs b/character_window/src/character/mod.rs index fa1d58d..8f4fec1 100644 --- a/character_window/src/character/mod.rs +++ b/character_window/src/character/mod.rs @@ -36,8 +36,7 @@ impl CharacterPage { let grid: Arc = snippet.element("statistic_tab")?; let name: Arc