From 4226d72b1d3b2555a8d36356c9ce50b8ba22e5ae Mon Sep 17 00:00:00 2001 From: hodasemi Date: Sun, 25 Aug 2024 11:44:44 +0200 Subject: [PATCH] Implement tool tip builder --- gavania-core/src/game/game.rs | 12 +++++++++++- rpg_components/src/items/ability_addon.rs | 2 +- rpg_components/src/items/ability_book.rs | 2 +- rpg_components/src/items/item.rs | 6 +++--- rpg_components/src/items/jewel.rs | 2 +- rpg_components/src/items/tooltip.rs | 2 +- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gavania-core/src/game/game.rs b/gavania-core/src/game/game.rs index d3b72d2..f09623e 100644 --- a/gavania-core/src/game/game.rs +++ b/gavania-core/src/game/game.rs @@ -12,7 +12,7 @@ use rpg_components::config::abilities::AbilitySettings; use rpg_components::config::attributes::AttributeSettings; use rpg_components::config::experience::ExperienceSettings; use rpg_components::config::items::ItemSettings; -use rpg_components::items::ItemSystem; +use rpg_components::items::{ItemSystem, ToolTipBuilder}; // std use std::collections::HashMap; @@ -101,6 +101,16 @@ impl GameHandle { } } +impl ToolTipBuilder for GameHandle { + fn asset_path(&self, s: &str) -> AssetPath { + self.build_data_path(s) + } + + fn gui_handler(&self) -> Arc { + self.upgrade().engine().gui_handler().clone() + } +} + pub struct Settings { pub core_settings: CoreSettings, pub user_settings: UserSettings, diff --git a/rpg_components/src/items/ability_addon.rs b/rpg_components/src/items/ability_addon.rs index ce57ffc..9eb29b5 100644 --- a/rpg_components/src/items/ability_addon.rs +++ b/rpg_components/src/items/ability_addon.rs @@ -278,7 +278,7 @@ impl AbilityAddon { position: (i32, i32), ) -> Result { let gui = GuiBuilder::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path("gui/xml/ingame/loot/addon_snippet.xml"), )?; diff --git a/rpg_components/src/items/ability_book.rs b/rpg_components/src/items/ability_book.rs index ec0f1fc..8d26f7a 100644 --- a/rpg_components/src/items/ability_book.rs +++ b/rpg_components/src/items/ability_book.rs @@ -287,7 +287,7 @@ impl AbilityBook { position: (i32, i32), ) -> Result { let gui = GuiBuilder::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path("gui/xml/ingame/loot/book_snippet.xml"), )?; diff --git a/rpg_components/src/items/item.rs b/rpg_components/src/items/item.rs index 75818e5..38adefe 100644 --- a/rpg_components/src/items/item.rs +++ b/rpg_components/src/items/item.rs @@ -230,7 +230,7 @@ impl Item { let count = stats.len() + jewels.len(); let inspector_snippet = GuiBuilder::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path(&format!("gui/xml/ingame/loot/items/slots_{}.xml", count)), )?; @@ -269,7 +269,7 @@ impl Item { for stat in stats { let stat_type_snippet = GuiSnippet::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path("gui/xml/ingame/loot/snippets/stat_type_snippet.xml"), )?; @@ -286,7 +286,7 @@ impl Item { for jewel in jewels { let socket_snippet = GuiSnippet::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path("gui/xml/ingame/loot/snippets/item_socket_snippet.xml"), )?; diff --git a/rpg_components/src/items/jewel.rs b/rpg_components/src/items/jewel.rs index 4bd3e5c..9962d34 100644 --- a/rpg_components/src/items/jewel.rs +++ b/rpg_components/src/items/jewel.rs @@ -65,7 +65,7 @@ impl Jewel { position: (i32, i32), ) -> Result { let inspector_snippet: Arc = GuiBuilder::new( - tooltip_builder.gui_handler(), + &tooltip_builder.gui_handler(), &tooltip_builder.asset_path("gui/xml/ingame/loot/jewel_tooltip.xml"), )?; diff --git a/rpg_components/src/items/tooltip.rs b/rpg_components/src/items/tooltip.rs index e2d088e..db95cfc 100644 --- a/rpg_components/src/items/tooltip.rs +++ b/rpg_components/src/items/tooltip.rs @@ -5,7 +5,7 @@ use std::sync::Arc; pub trait ToolTipBuilder { fn asset_path(&self, s: &str) -> AssetPath; - fn gui_handler(&self) -> &Arc; + fn gui_handler(&self) -> Arc; } pub struct FittingResult {