From 2c44bf5efa1fa0894057eb4ed87dc88c9484c2e7 Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Wed, 5 Jun 2024 10:53:49 -0400 Subject: Moved widget rendering back into display system --- Cargo.toml | 2 +- src/display/systems.rs | 14 ++++++++++++-- src/lib.rs | 6 +----- src/widgets/systems.rs | 19 +------------------ 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3b8a967..14f8c5c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_terminal_display" -version = "0.2.0" +version = "0.2.1" edition = "2021" [dependencies] diff --git a/src/display/systems.rs b/src/display/systems.rs index a768af5..037f72d 100644 --- a/src/display/systems.rs +++ b/src/display/systems.rs @@ -2,16 +2,16 @@ use bevy::{ prelude::*, render::render_resource::{Extent3d, TextureFormat}, }; -use crossterm::event::Event; use bevy_framebuffer_extract::{ components::FramebufferExtractDestination, render_assets::FramebufferExtractSource, }; +use crossterm::event::Event; use ratatui::{ style::Stylize, widgets::{Paragraph, Wrap}, }; -use crate::input::events::TerminalInputEvent; +use crate::{input::events::TerminalInputEvent, widgets::components::Widget}; use super::resources::Terminal; @@ -28,6 +28,7 @@ const BRAILLE_DOT_BIT_POSITIONS: [u8; 8] = [0, 1, 2, 6, 3, 4, 5, 7]; pub fn print_to_terminal( mut terminal: ResMut, image_exports: Query<&FramebufferExtractDestination>, + mut widgets: Query<&mut Widget>, ) { for image_export in image_exports.iter() { let mut image = image_export @@ -77,6 +78,15 @@ pub fn print_to_terminal( .wrap(Wrap { trim: true }), frame.size(), ); + + let mut active_widgets = widgets + .iter_mut() + .filter(|widget| widget.enabled) + .collect::>(); + active_widgets.sort_by(|a, b| a.depth.cmp(&b.depth)); + for mut widget in active_widgets { + widget.widget.render(frame, frame.size()); + } }) .expect("Failed to draw terminal frame"); } diff --git a/src/lib.rs b/src/lib.rs index 280e413..11ee50c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -83,11 +83,7 @@ impl Plugin for TerminalDisplayPlugin { ( input::systems::input_handling, display::systems::resize_handling, - ( - display::systems::print_to_terminal, - widgets::systems::draw_widgets, - ) - .chain(), + display::systems::print_to_terminal, widgets::systems::widget_input_handling, ), ) diff --git a/src/widgets/systems.rs b/src/widgets/systems.rs index 69a84e3..2626ec6 100644 --- a/src/widgets/systems.rs +++ b/src/widgets/systems.rs @@ -1,26 +1,9 @@ use bevy::prelude::*; -use crate::{display::resources::Terminal, input::events::TerminalInputEvent}; +use crate::input::events::TerminalInputEvent; use super::components::Widget; -/// Invokes every enabled widget's `render` method -pub fn draw_widgets(mut terminal: ResMut, mut widgets: Query<&mut Widget>) { - terminal - .0 - .draw(|frame| { - let mut active_widgets = widgets - .iter_mut() - .filter(|widget| widget.enabled) - .collect::>(); - active_widgets.sort_by(|a, b| a.depth.cmp(&b.depth)); - for mut widget in active_widgets { - widget.widget.render(frame, frame.size()); - } - }) - .unwrap(); -} - /// Invokes every enabled widget's `handle_events` methods for each incoming input event pub fn widget_input_handling( mut widgets: Query<&mut Widget>, -- cgit v1.2.3