50 lines
1.5 KiB
Rust
50 lines
1.5 KiB
Rust
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::<console::ConsoleState>()
|
|
.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<RatatuiContext>, query: Query<&Tile>) -> Result {
|
|
tui_ctx.draw(|frame| {
|
|
let text = ratatui::text::Text::raw("tiny riichi");
|
|
frame.render_widget(text, frame.area());
|
|
})?;
|
|
|
|
Ok(())
|
|
}
|