use std::fmt::Debug;
use bevy::prelude::*;
use ratatui::Terminal;
use crate::context::TerminalContext;
use soft_ratatui::embedded_graphics_unicodefonts::{
mono_8x13_atlas, mono_8x13_bold_atlas, mono_8x13_italic_atlas,
};
use soft_ratatui::{EmbeddedGraphics, SoftBackend};
use super::plugin::WindowedPlugin;
#[derive(Deref, DerefMut)]
pub struct WindowedContext(Terminal<SoftBackend<EmbeddedGraphics>>);
impl Debug for WindowedContext {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "WindowedContext()")
}
}
impl TerminalContext<SoftBackend<EmbeddedGraphics>> for WindowedContext {
fn init() -> Result<Self> {
let font_regular = mono_8x13_atlas();
let font_italic = mono_8x13_italic_atlas();
let font_bold = mono_8x13_bold_atlas();
let backend = SoftBackend::<EmbeddedGraphics>::new(
100,
50,
font_regular,
Some(font_bold),
Some(font_italic),
);
let terminal = Terminal::new(backend)?;
Ok(Self(terminal))
}
fn restore() -> Result<()> {
Ok(())
}
fn configure_plugin_group(
_group: &crate::RatatuiPlugins,
mut builder: bevy::app::PluginGroupBuilder,
) -> bevy::app::PluginGroupBuilder {
builder = builder.add(WindowedPlugin);
builder
}
}