diff --git a/src/tui/mod.rs b/src/tui/mod.rs index 37c9315..1c3e510 100644 --- a/src/tui/mod.rs +++ b/src/tui/mod.rs @@ -13,8 +13,8 @@ mod render; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, States, Default)] enum TuiState { - MainMenu, #[default] + MainMenu, InGame, } @@ -44,9 +44,11 @@ impl Plugin for RiichiTui { .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(Update, render::draw_ingame.run_if(in_state(TuiState::InGame))) - .add_systems(Update,render::render_changed_hand.run_if(in_state(GameState::Play))) + // .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 ; } diff --git a/src/tui/render/hand.rs b/src/tui/render/hand.rs new file mode 100644 index 0000000..dc6cce5 --- /dev/null +++ b/src/tui/render/hand.rs @@ -0,0 +1,26 @@ +use bevy::prelude::*; +use ratatui::widgets::Paragraph; + +use jong::game::player::HandTiles; +use jong::tiles::Tile; + +use crate::tui::render::tiles; + +#[derive(Component)] +pub(crate) struct RenderedHand<'a>(pub(crate) Vec>); + +pub(crate) fn render_changed_hand( + hand: Single<&HandTiles, Changed>, + // hand_tiles: Query<&HandTiles, With>, + tiles: Query<&Tile>, + mut target: Single<&'static mut RenderedHand>, +) -> Result { + let hand_tiles = hand + .iter() + .map(|inhand| -> Result<_> { Ok(tiles.get(inhand).map(tiles::draw_tile)?) }) + .collect::>>()?; + + target.0 = hand_tiles; + + Ok(()) +} diff --git a/src/tui/render.rs b/src/tui/render/ingame.rs similarity index 68% rename from src/tui/render.rs rename to src/tui/render/ingame.rs index e3fe942..66fbbb3 100644 --- a/src/tui/render.rs +++ b/src/tui/render/ingame.rs @@ -1,42 +1,13 @@ -use bevy::ecs::system::SystemParam; use bevy::prelude::*; use bevy_ratatui::RatatuiContext; -use ratatui::widgets::Paragraph; -use jong::{ - game::{ - player::{Hand, HandTiles}, - wall::{Wall, WallTiles}, - }, - tiles::Tile, -}; - -mod tiles; - -#[derive(Component)] -pub(crate) struct RenderedHand<'a>(Vec>); - -pub(crate) fn render_changed_hand( - hand: Single<&HandTiles, Changed>, - // hand_tiles: Query<&HandTiles, With>, - tiles: Query<&Tile>, - mut target: Single<&'static mut RenderedHand>, -) -> Result { - let hand_tiles = hand - .iter() - .map(|inhand| -> Result<_> { Ok(tiles.get(inhand).map(tiles::draw_tile)?) }) - .collect::>>()?; - - target.0 = hand_tiles; - - Ok(()) -} +use crate::tui::render::hand; pub(crate) fn draw_ingame( // tiles: Query<&Tile>, // wall_tiles: Option>>, // hand_tiles: Query<&HandTiles, With>, - rendered_hand: Single<&'static RenderedHand>, + rendered_hand: Single<&'static hand::RenderedHand>, mut tui_ctx: ResMut, ) -> Result { use ratatui::layout::Flex; diff --git a/src/tui/render/mod.rs b/src/tui/render/mod.rs new file mode 100644 index 0000000..fc30799 --- /dev/null +++ b/src/tui/render/mod.rs @@ -0,0 +1,27 @@ +use bevy::ecs::system::SystemParam; +use bevy::prelude::*; +use bevy_ratatui::RatatuiContext; +use ratatui::widgets::Paragraph; + +use jong::{ + game::{ + GameState, + player::Hand, + wall::{Wall, WallTiles}, + }, + tiles::Tile, +}; + +use crate::tui::TuiState; + +pub(crate) mod hand; +pub(crate) mod ingame; +mod tiles; + +pub(crate) fn draw_mainmenu( + mut tui_ctx: ResMut, + mut tui_state: ResMut>, + mut game_state: ResMut>, +) { + tui_ctx.draw(|frame| {}); +}