use std::time::Duration; use bevy::{app::ScheduleRunnerPlugin, prelude::*, state::app::StatesPlugin}; use bevy_ratatui::RatatuiPlugins; use jong::tiles::InWall; use ratatui::{text::ToSpan, widgets::Paragraph}; mod console; mod input; mod render; 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))) .init_state::() .add_systems(Update, input::keyboard_input_system) .add_systems(Update, render::draw_ingame.run_if(in_state(TuiState::InGame))) // semicolon stopper ; } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, States, Default)] enum TuiState { MainMenu, #[default] InGame, }