diff --git a/examples/ui.rs b/examples/ui.rs index 332b457..f04af3c 100644 --- a/examples/ui.rs +++ b/examples/ui.rs @@ -2,10 +2,7 @@ //! This example illustrates scrolling in Bevy UI. -use bevy::picking::{ - hover::HoverMap, - pointer::{PointerId, PointerMap}, -}; +use bevy::picking::hover::HoverMap; use games::*; use lipsum::*; use rand::*; diff --git a/src/bin/trees/main.rs b/src/bin/trees/main.rs index 7dd89f9..c872fe8 100644 --- a/src/bin/trees/main.rs +++ b/src/bin/trees/main.rs @@ -1,6 +1,7 @@ #![allow(dead_code)] #![allow(clippy::type_complexity)] #![allow(clippy::too_many_arguments)] +#![feature(trim_prefix_suffix)] mod mono; @@ -49,13 +50,13 @@ fn main() { .run_if(on_event::>.or(on_event::>)), scale_window.run_if(on_event::), hide_menu.run_if(any_component_changed::), + clear_monologue.run_if(any_component_changed::), control_menu.run_if(on_event::>.or(on_event::>)), ), ) .add_observer(add_dialog_option) .add_observer(add_tree_monologue) .add_observer(remove_tree_monologue) - .add_observer(hide_monologue_preview) .add_observer(populate_tree) .add_observer(show_monologue_list) .add_observer(hide_monologue_list) @@ -162,12 +163,17 @@ fn init_debug_ui(mut commands: Commands) { parent.spawn(( Name::new("Preview"), - Text::new("This is placeholder text"), + MonologuePreview, + NavParent(button), + NavState::default(), Node { + flex_direction: FlexDirection::Column, + padding: UiRect::all(Val::Px(10.0)), + overflow: Overflow::scroll_y(), + max_width: Val::Percent(50.0), ..default() }, - BackgroundColor(YELLOW.into()), - MonologuePreview, + BackgroundColor(ORANGE_RED.into()), )); }); } @@ -561,7 +567,7 @@ fn spawn_debug_buttons( parent .spawn(( Button, - Text::new(handle.path().unwrap().to_string()), + Text::new(handle.path().unwrap().to_string().trim_prefix("trees/").trim_suffix(".mono")), TextLayout::new(JustifyText::Left, LineBreak::WordBoundary), TreeMonologue(handle.clone()), MonologuesList, @@ -572,9 +578,6 @@ fn spawn_debug_buttons( .observe(toggle_debug_button_color_over) .observe(toggle_debug_button_color_out); }); - - // Spawn a tree too to make the game feel like it's doing something at startup - commands.spawn((Tree, TreeMonologue(handle.clone()))); } }); } @@ -606,22 +609,29 @@ fn preview_monologue( ) { // Get the handle for this button's monologuie if let Ok(TreeMonologue(handle)) = tree_monologue.get(trigger.target()) { + // Get the monologue data if let Some(monologue) = monologues.get(handle) { commands.entity(*container).despawn_related::(); // Spawn the monologue - let mut i = 0; commands.entity(*container).with_children(|parent| { + let mut i = 0; while let Some(batch) = monologue.get(i) { parent.spawn((Text::new("---"), MonologuePreview)); + debug!("---"); + for (n, item) in batch.lines.iter().enumerate() { parent.spawn((Text::new(format!("{i}.{n}: {item}")), MonologuePreview)); + debug!("{i}.{n}: {item}"); } + // TODO: Just implement iter_batches or something i += 1; } + parent.spawn((Text::new("---"), MonologuePreview)); + debug!("---"); }); } } @@ -713,26 +723,6 @@ fn populate_tree( .observe(drag_tree); } -fn hide_monologue_preview( - trigger: Trigger>, - preview: Single, Without