use std::time::Duration; use bevy::{app::ScheduleRunnerPlugin, prelude::*, state::app::StatesPlugin}; use bevy_ratatui::RatatuiPlugins; use ratatui::{text::ToSpan, widgets::Paragraph}; use jong::game::GameState; use jong::game::wall::InWall; mod console; mod input; mod render; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, States, Default)] enum TuiState { #[default] MainMenu, InGame, } #[derive(Default)] pub struct RiichiTui { // player_names: Vec, } 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) // setup console .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, render::draw_mainmenu.run_if(in_state(TuiState::MainMenu))) // .add_systems(Update, input::keyboard_input_system) // .add_systems() .add_systems(Update, render::ingame::draw_ingame.run_if(in_state(TuiState::InGame))) .add_systems(Update, render::hand::render_changed_hand.run_if(in_state(GameState::Play))) // semicolon stopper ; } } // fn prompt_names() {}