jong/src/tui/mod.rs

51 lines
1.5 KiB
Rust
Raw Normal View History

2026-01-08 20:49:19 -08:00
use std::time::Duration;
2026-01-09 03:34:54 -08:00
use bevy::{app::ScheduleRunnerPlugin, input::keyboard::Key, prelude::*, state::app::StatesPlugin};
2026-01-08 20:49:19 -08:00
use bevy_ratatui::{RatatuiContext, RatatuiPlugins};
2026-01-08 21:35:16 -08:00
use jong::tiles::Tile;
2026-01-09 03:34:54 -08:00
use tui_logger::TuiLoggerSmartWidget;
2026-01-07 00:51:57 -08:00
2026-01-09 03:34:54 -08:00
mod console;
2026-01-08 20:49:19 -08:00
mod input;
pub struct RiichiTui;
2026-01-07 00:51:57 -08:00
2026-01-08 20:49:19 -08:00
impl Plugin for RiichiTui {
fn build(&self, app: &mut App) {
app.add_plugins((
MinimalPlugins.set(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f32(
2026-01-09 03:34:54 -08:00
1. / 60.,
2026-01-08 20:49:19 -08:00
))),
RatatuiPlugins {
// enable_kitty_protocol: todo!(),
// enable_mouse_capture: todo!(),
enable_input_forwarding: true,
..Default::default()
},
))
2026-01-09 03:34:54 -08:00
.add_plugins(StatesPlugin)
.init_state::<console::ConsoleState>()
.add_systems(Update, console::toggle_console)
.add_systems(Update, console::draw_console.run_if(in_state(console::ConsoleState::Open)))
2026-01-08 23:58:26 -08:00
.add_systems(Update, input::keyboard_input_system)
2026-01-09 03:34:54 -08:00
.add_systems(Update, draw_system)
// semicolon stopper
;
2026-01-08 20:49:19 -08:00
}
}
2026-01-07 00:51:57 -08:00
2026-01-09 03:34:54 -08:00
// #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, States)]
// enum TuiState {
// MainMenu,
// InGame,
// }
pub(crate) fn draw_system(mut tui_ctx: ResMut<RatatuiContext>, query: Query<&Tile>) -> Result {
tui_ctx.draw(|frame| {
2026-01-07 00:51:57 -08:00
let text = ratatui::text::Text::raw("tiny riichi");
frame.render_widget(text, frame.area());
})?;
Ok(())
}