temporary workaround racing against render and spawning hand?

This commit is contained in:
Tao Tien 2026-02-24 17:18:31 -08:00
parent c274f6b807
commit 922413cc93
4 changed files with 22 additions and 15 deletions

View file

@ -15,6 +15,7 @@
# paths = [./jong]; # paths = [./jong];
# }; # };
}; };
processes.tail_log.exec = "tail -f jong.log";
# https://devenv.sh/packages/ # https://devenv.sh/packages/
packages = with pkgs; [ packages = with pkgs; [

View file

@ -4,7 +4,7 @@ use bevy::{log::LogPlugin, prelude::*};
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
use tracing::Level; use tracing::Level;
use tracing_subscriber::{ use tracing_subscriber::{
Layer, EnvFilter, Layer,
fmt::{self, layer}, fmt::{self, layer},
layer::SubscriberExt, layer::SubscriberExt,
util::SubscriberInitExt, util::SubscriberInitExt,
@ -40,7 +40,11 @@ fn main() {
Mode::RunTui => { Mode::RunTui => {
tracing_subscriber::registry() tracing_subscriber::registry()
.with(tui_logger::TuiTracingSubscriberLayer) .with(tui_logger::TuiTracingSubscriberLayer)
.with(fmt::layer().with_writer(File::create("jong.log").unwrap())) .with(
fmt::layer()
.with_writer(File::create("jong.log").unwrap())
.with_filter(EnvFilter::from_default_env()),
)
.init(); .init();
tui_logger::init_logger(tui_logger::LevelFilter::Trace).unwrap(); tui_logger::init_logger(tui_logger::LevelFilter::Trace).unwrap();
tui_logger::set_env_filter_from_string(FILTERSTRING); tui_logger::set_env_filter_from_string(FILTERSTRING);

View file

@ -187,17 +187,11 @@ fn spawn_main_hand(
.iter() .iter()
.map(|dbt| commands.spawn((Tile::from(&dbt.tile), TileId(dbt.id))).id()) .map(|dbt| commands.spawn((Tile::from(&dbt.tile), TileId(dbt.id))).id())
.collect(); .collect();
let pond = commands.spawn(Hand).add_children(&pond_tiles).id(); let hand = commands.spawn(Hand).add_children(&hand_tiles).id();
let hand = commands.spawn(Pond).add_children(&hand_tiles).id(); let pond = commands.spawn(Pond).add_children(&pond_tiles).id();
let children = commands commands.entity(main_player).add_children(&[hand, pond]);
.entity(main_player)
.add_children(&[pond, hand])
.id();
debug!( debug!("main_hand: {:?}\n main_pond: {:?}", hand_tiles, pond_tiles);
"main_hand: {:?}\n main_pond: {:?}, children: {:?}",
hand_tiles, pond_tiles, children
);
if player_hand.turn_state == jong_db::TurnState::Tsumo if player_hand.turn_state == jong_db::TurnState::Tsumo
&& let Some(drawn_dbt) = &player_hand.working_tile && let Some(drawn_dbt) = &player_hand.working_tile
@ -319,10 +313,10 @@ fn on_view_hand_update(
) { ) {
// TODO can this and similar run at startup or on play/reconnect? // TODO can this and similar run at startup or on play/reconnect?
for msg in messages.read() { for msg in messages.read() {
trace!("new hand: {:?}", msg.new); // trace!("new hand: {:?}", msg.new);
if main_player.1.is_none() { if main_player.1.is_none() {
trace!("spawn_main_hand, {:?}", *main_player); // trace!("spawn_main_hand, {:?}", *main_player);
spawn_main_hand(&mut commands, &mut next_turnstate, main_player.0, &msg.new); spawn_main_hand(&mut commands, &mut next_turnstate, main_player.0, &msg.new);
continue; continue;
} }

View file

@ -112,6 +112,10 @@ pub(crate) fn render_main_hand(
let mut frame = tui.get_frame(); let mut frame = tui.get_frame();
debug_blocks(layouts.clone(), &mut frame); debug_blocks(layouts.clone(), &mut frame);
if hand.is_empty() {
return Ok(());
}
let hand: Vec<_> = hand let hand: Vec<_> = hand
.iter() .iter()
.find_map(|(c, e)| { .find_map(|(c, e)| {
@ -222,6 +226,10 @@ pub(crate) fn render_main_pond(
) -> Result { ) -> Result {
let mut frame = tui.get_frame(); let mut frame = tui.get_frame();
if pond.is_empty() {
return Ok(());
}
let pond: Vec<_> = pond let pond: Vec<_> = pond
.iter() .iter()
.find_map(|(c, e)| { .find_map(|(c, e)| {