jong/src/tui/render/hand.rs

51 lines
1.2 KiB
Rust
Raw Normal View History

2026-01-11 22:32:30 -08:00
use bevy::prelude::*;
use ratatui::widgets::Paragraph;
2026-01-12 01:54:59 -08:00
use jong::game::hand::HandTiles;
2026-01-11 22:32:30 -08:00
use jong::tiles::Tile;
use crate::tui::render::tiles;
2026-01-12 01:54:59 -08:00
#[derive(Resource, Default)]
pub(crate) struct RenderedHand(pub(crate) Vec<Paragraph<'static>>);
2026-01-11 22:32:30 -08:00
pub(crate) fn render_changed_hand(
hand: Single<&HandTiles, Changed<HandTiles>>,
2026-01-12 01:54:59 -08:00
tiles: Populated<&Tile>,
mut target: ResMut<RenderedHand>,
2026-01-11 22:32:30 -08:00
) -> Result {
2026-01-12 21:07:34 -08:00
let mut rendered = vec![];
for hand in hands {
let hand_tiles = hand
.iter()
.map(|inhand| -> Result<_> { Ok(tiles.get(inhand).map(tiles::draw_tile)?) })
.collect::<Result<Vec<_>>>()?;
rendered.push(hand_tiles);
}
target.0 = rendered;
2026-01-12 01:54:59 -08:00
trace!("render_changed_hand");
render_hand(hand, tiles, target)?;
Ok(())
}
pub(crate) fn render_hand(
hand: Single<&HandTiles, Changed<HandTiles>>,
tiles: Populated<&Tile>,
mut target: ResMut<RenderedHand>,
) -> Result {
trace!("render_hand");
2026-01-11 22:32:30 -08:00
let hand_tiles = hand
.iter()
.map(|inhand| -> Result<_> { Ok(tiles.get(inhand).map(tiles::draw_tile)?) })
.collect::<Result<Vec<_>>>()?;
target.0 = hand_tiles;
Ok(())
}