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