tiles are now in hand
This commit is contained in:
parent
a1c72b2c48
commit
b9c653f3a2
1 changed files with 23 additions and 25 deletions
|
|
@ -66,7 +66,7 @@ impl Plugin for Riichi {
|
||||||
// .init_resource::<round::MatchSettings>()
|
// .init_resource::<round::MatchSettings>()
|
||||||
// .init_resource::<round::Compass>()
|
// .init_resource::<round::Compass>()
|
||||||
.add_message::<GameMessage>()
|
.add_message::<GameMessage>()
|
||||||
.add_systems(Startup, tile::init_tiles)
|
// .add_systems(Startup, tile::init_tiles)
|
||||||
// .add_systems(Update, hand::sort_hands.run_if(in_state(GameState::Play)))
|
// .add_systems(Update, hand::sort_hands.run_if(in_state(GameState::Play)))
|
||||||
// .add_systems(OnEnter(TurnState::Tsumo), round::tsumo)
|
// .add_systems(OnEnter(TurnState::Tsumo), round::tsumo)
|
||||||
// .add_systems(OnEnter(TurnState::Menzen), round::menzen)
|
// .add_systems(OnEnter(TurnState::Menzen), round::menzen)
|
||||||
|
|
@ -118,13 +118,16 @@ fn subscriptions(stdb: SpacetimeDB) {
|
||||||
// .subscribe_to_all_tables();
|
// .subscribe_to_all_tables();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
struct TileId(u32);
|
||||||
|
|
||||||
fn on_player_insert_update(
|
fn on_player_insert_update(
|
||||||
stdb: SpacetimeDB,
|
stdb: SpacetimeDB,
|
||||||
mut messages: ReadInsertUpdateMessage<stdb::Player>,
|
mut messages: ReadInsertUpdateMessage<stdb::Player>,
|
||||||
|
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
|
|
||||||
tiles: Query<(&Tile, Entity)>,
|
tiles: Query<(&Tile, &TileId, Entity)>,
|
||||||
mut player: Option<Single<&mut player::Player>>,
|
mut player: Option<Single<&mut player::Player>>,
|
||||||
mut hand_ent: Option<Single<Entity, With<Hand>>>,
|
mut hand_ent: Option<Single<Entity, With<Hand>>>,
|
||||||
) {
|
) {
|
||||||
|
|
@ -132,34 +135,29 @@ fn on_player_insert_update(
|
||||||
|
|
||||||
for msg in messages.read() {
|
for msg in messages.read() {
|
||||||
debug!("player_insert_update msg:\n{:#?}", msg.new);
|
debug!("player_insert_update msg:\n{:#?}", msg.new);
|
||||||
if let Some(ref player) = player {
|
if let (Some(player), Some(hand_ent)) = (player.as_ref(), hand_ent.as_ref()) {
|
||||||
// if msg.old.as_ref().is_some_and(|m| !m.ready) && msg.new.ready {
|
// if msg.old.as_ref().is_some_and(|m| !m.ready) && msg.new.ready {
|
||||||
// trace!("entered ready");
|
// trace!("entered ready");
|
||||||
// // TODO add a start game button in the future
|
// // TODO add a start game button in the future
|
||||||
// stdb.reducers().start_game().unwrap();
|
// stdb.reducers().start_game().unwrap();
|
||||||
// }
|
// }
|
||||||
let mut view: Vec<_> = msg.new.hand.iter().map(Tile::from).collect();
|
let mut tiles: Vec<_> = msg
|
||||||
// let mut tiles = tiles
|
.new
|
||||||
// .iter()
|
.hand
|
||||||
// .filter(|(tt, _)| {
|
.iter()
|
||||||
// if let Some((i, _)) = view.iter().enumerate().find(|(_, t)| t == tt) {
|
.map(|dbt| {
|
||||||
// view.swap_remove(i);
|
if let Some(ent) = tiles
|
||||||
// true
|
.iter()
|
||||||
// } else {
|
.find(|(_, id, _)| id.0 == dbt.id)
|
||||||
// false
|
.map(|(_, _, e)| e)
|
||||||
// }
|
{
|
||||||
// })
|
ent
|
||||||
// // .map(|(t, e)| e)
|
} else {
|
||||||
// .collect::<Vec<_>>();
|
commands.spawn((Tile::from(&dbt.tile), TileId(dbt.id))).id()
|
||||||
// tiles.sort_by_key(|(t, e)| **t);
|
}
|
||||||
// tiles.get_many(entities)
|
})
|
||||||
|
.collect();
|
||||||
|
commands.entity(**hand_ent).replace_children(&tiles);
|
||||||
let tiles = tiles.into_iter().map(|(_, e)| e).collect::<Vec<_>>();
|
|
||||||
|
|
||||||
commands
|
|
||||||
.entity(**hand_ent.as_ref().unwrap())
|
|
||||||
.replace_children(&tiles);
|
|
||||||
} else {
|
} else {
|
||||||
let player = Player {
|
let player = Player {
|
||||||
name: msg
|
name: msg
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue