jong/src/tui/render/mod.rs
2026-01-15 01:47:40 -08:00

41 lines
1 KiB
Rust

use bevy::prelude::*;
use bevy_ratatui::RatatuiContext;
use ratatui::{
Frame,
widgets::{Block, Clear},
};
use tui_logger::TuiLoggerWidget;
pub(crate) mod hand;
pub(crate) mod ingame;
pub(crate) mod menu;
pub(crate) mod tile;
#[derive(Resource, Default)]
pub(crate) struct WidgetStack(pub(crate) Vec<Box<dyn FnOnce(&mut Frame) + Send + Sync>>);
#[derive(Component)]
pub(crate) struct Hovered;
pub(crate) fn draw_console(mut widgets: ResMut<WidgetStack>) {
widgets.0.push(Box::new(|frame| {
let block = Block::bordered().title("console");
frame.render_widget(Clear, frame.area());
frame.render_widget(
TuiLoggerWidget::default().block(block),
frame.area(), /* .inner(Margin { horizontal: 8, vertical: 8 }) */
);
}));
}
pub(crate) fn draw_system(
mut tui_ctx: ResMut<RatatuiContext>,
mut widgets: ResMut<WidgetStack>,
) -> Result {
tui_ctx.draw(|frame| {
for widget in widgets.0.drain(..) {
widget(frame)
}
})?;
Ok(())
}