diff --git a/src/bin/trees/main.rs b/src/bin/trees/main.rs index 5e0df3f..471777c 100644 --- a/src/bin/trees/main.rs +++ b/src/bin/trees/main.rs @@ -33,7 +33,10 @@ fn main() { mouse_wheel_scroll.run_if(on_event::), auto_scroll.run_if(any_component_added::), dialog_box_visibility - .run_if(state_changed::) + .run_if(state_changed::), + // monologue_asset_tooltip + // .run_if(on_event::> + // .or(on_event::>)), ), ) .add_observer(add_dialog_option) @@ -437,3 +440,12 @@ fn dialog_box_visibility( Visibility::Inherited }; } + +fn monologue_asset_tooltip( + mut over_events: EventReader>, + mut out_events: EventReader>, + mut tooltip: ResMut, + query: Query<&TreeMonologue>, +) { + todo!() +} diff --git a/src/debug.rs b/src/debug.rs index 9dae954..6992d48 100644 --- a/src/debug.rs +++ b/src/debug.rs @@ -1,6 +1,6 @@ use bevy::{ color::palettes::css::MAGENTA, - pbr::wireframe::{WireframeConfig, WireframePlugin}, + pbr::wireframe::{WireframeConfig, WireframePlugin}, platform::collections::HashMap, }; use super::*; @@ -31,8 +31,7 @@ impl Plugin for DebuggingPlugin { .run_if(state_changed::), toggle_debug_state.run_if(on_keyboard_press(KeyCode::F12)), ( - hover_mesh.run_if(on_event::>), - hover_ui.run_if(on_event::>), + (hover_mesh, hover_ui).run_if(on_event::>.or(on_event::>)), tooltip_follow.run_if(any_component_changed::), sync_resource_to_ui::.run_if(resource_changed::), ) @@ -111,11 +110,24 @@ fn toggle_rapier_debug_render( /// Add a generic Tooltip that follows the mouse in debug mode #[derive(Default, Resource)] -struct ToolTip(String); +pub struct ToolTip(HashMap); + +impl ToolTip { + pub fn insert(&mut self, k: &str, v: String) { + self.0.insert(k.into(), v); + } + + pub fn remove(&mut self, k: &str) { + self.0.remove(k); + } +} impl Display for ToolTip { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "{}", self.0) + for (k, v) in self.0.iter() { + write!(f, "{k}: {v}\n")? + } + Ok(()) } } @@ -143,7 +155,9 @@ fn hover_mesh( .read() .filter_map(|Pointer { target, .. }| meshes.contains(*target).then_some(*target)) .for_each(|_| { - tooltip.0 = "".into(); + tooltip.remove("ID"); + tooltip.remove("Pos"); + tooltip.remove("Name"); }); over_events .read() @@ -155,7 +169,9 @@ fn hover_mesh( Some(x) => x, None => "???", }; - tooltip.0 = format!("ID: {e}\nPos: {pos:.3?}\nName: {name}"); + tooltip.insert("ID", format!("{e}")); + tooltip.insert("Pos", format!("{pos:.3?}")); + tooltip.insert("Name", name.into()); } else { warn!("Failed to query data"); } @@ -172,7 +188,8 @@ fn hover_ui( .read() .filter_map(|Pointer { target, .. }| nodes.contains(*target).then_some(*target)) .for_each(|_| { - tooltip.0 = "".into(); + tooltip.remove("ID"); + tooltip.remove("Name"); }); over_events .read() @@ -183,7 +200,8 @@ fn hover_ui( Some(x) => x, None => "???", }; - tooltip.0 = format!("ID: {e}\nName: {name}"); + tooltip.insert("ID", format!("{e}")); + tooltip.insert("Name", name.into()); } else { warn!("Failed to query data"); }