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::Compass>()
|
||||
.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(OnEnter(TurnState::Tsumo), round::tsumo)
|
||||
// .add_systems(OnEnter(TurnState::Menzen), round::menzen)
|
||||
|
|
@ -118,13 +118,16 @@ fn subscriptions(stdb: SpacetimeDB) {
|
|||
// .subscribe_to_all_tables();
|
||||
}
|
||||
|
||||
#[derive(Component)]
|
||||
struct TileId(u32);
|
||||
|
||||
fn on_player_insert_update(
|
||||
stdb: SpacetimeDB,
|
||||
mut messages: ReadInsertUpdateMessage<stdb::Player>,
|
||||
|
||||
mut commands: Commands,
|
||||
|
||||
tiles: Query<(&Tile, Entity)>,
|
||||
tiles: Query<(&Tile, &TileId, Entity)>,
|
||||
mut player: Option<Single<&mut player::Player>>,
|
||||
mut hand_ent: Option<Single<Entity, With<Hand>>>,
|
||||
) {
|
||||
|
|
@ -132,34 +135,29 @@ fn on_player_insert_update(
|
|||
|
||||
for msg in messages.read() {
|
||||
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 {
|
||||
// trace!("entered ready");
|
||||
// // TODO add a start game button in the future
|
||||
// stdb.reducers().start_game().unwrap();
|
||||
// }
|
||||
let mut view: Vec<_> = msg.new.hand.iter().map(Tile::from).collect();
|
||||
// let mut tiles = tiles
|
||||
// .iter()
|
||||
// .filter(|(tt, _)| {
|
||||
// if let Some((i, _)) = view.iter().enumerate().find(|(_, t)| t == tt) {
|
||||
// view.swap_remove(i);
|
||||
// true
|
||||
// } else {
|
||||
// false
|
||||
// }
|
||||
// })
|
||||
// // .map(|(t, e)| e)
|
||||
// .collect::<Vec<_>>();
|
||||
// tiles.sort_by_key(|(t, e)| **t);
|
||||
// tiles.get_many(entities)
|
||||
|
||||
|
||||
let tiles = tiles.into_iter().map(|(_, e)| e).collect::<Vec<_>>();
|
||||
|
||||
commands
|
||||
.entity(**hand_ent.as_ref().unwrap())
|
||||
.replace_children(&tiles);
|
||||
let mut tiles: Vec<_> = msg
|
||||
.new
|
||||
.hand
|
||||
.iter()
|
||||
.map(|dbt| {
|
||||
if let Some(ent) = tiles
|
||||
.iter()
|
||||
.find(|(_, id, _)| id.0 == dbt.id)
|
||||
.map(|(_, _, e)| e)
|
||||
{
|
||||
ent
|
||||
} else {
|
||||
commands.spawn((Tile::from(&dbt.tile), TileId(dbt.id))).id()
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
commands.entity(**hand_ent).replace_children(&tiles);
|
||||
} else {
|
||||
let player = Player {
|
||||
name: msg
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue