2026-01-09 23:14:29 -08:00
|
|
|
use bevy::prelude::*;
|
|
|
|
|
use bevy_ratatui::RatatuiContext;
|
2026-01-13 01:08:14 -08:00
|
|
|
use jong::game::player::{MainPlayer, Player};
|
2026-01-09 23:14:29 -08:00
|
|
|
|
2026-01-13 03:32:08 -08:00
|
|
|
use crate::tui::render::{hand, tile::RenderedTile};
|
2026-01-11 20:10:30 -08:00
|
|
|
|
|
|
|
|
pub(crate) fn draw_ingame(
|
2026-01-12 01:54:59 -08:00
|
|
|
rendered_hand: Res<hand::RenderedHand>,
|
2026-01-13 03:32:08 -08:00
|
|
|
rendered_tiles: Populated<&RenderedTile>,
|
2026-01-13 01:08:14 -08:00
|
|
|
main_player: Single<Entity, (With<Player>, With<MainPlayer>)>,
|
2026-01-09 23:14:29 -08:00
|
|
|
mut tui_ctx: ResMut<RatatuiContext>,
|
|
|
|
|
) -> Result {
|
|
|
|
|
use ratatui::layout::Flex;
|
|
|
|
|
use ratatui::prelude::*;
|
|
|
|
|
|
|
|
|
|
tui_ctx.draw(|frame| {
|
2026-01-12 21:07:34 -08:00
|
|
|
// debug!("{}", frame.area());
|
2026-01-09 23:14:29 -08:00
|
|
|
|
2026-01-11 20:10:30 -08:00
|
|
|
let layout = Layout::horizontal(vec![Constraint::Max(5); 13]).flex(Flex::Start);
|
|
|
|
|
let mut area = frame.area();
|
|
|
|
|
area.height = 4;
|
|
|
|
|
let areas = layout.areas::<13>(area);
|
2026-01-13 01:08:14 -08:00
|
|
|
// if let Some(hand) = rendered_hand.0.get(&*main_player) {
|
|
|
|
|
if let Some(hand) = rendered_hand.0.get(&*main_player) {
|
|
|
|
|
for (tile, area) in hand.iter().zip(areas.iter()) {
|
2026-01-13 03:32:08 -08:00
|
|
|
frame.render_widget(&rendered_tiles.get(*tile).unwrap().0, *area);
|
2026-01-12 21:57:08 -08:00
|
|
|
}
|
2026-01-09 23:14:29 -08:00
|
|
|
}
|
|
|
|
|
})?;
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|