discard_tile is now observer. investigate drawn entity and tileid sychro?
This commit is contained in:
parent
a39ad4cf7c
commit
71ec40ee29
3 changed files with 12 additions and 14 deletions
|
|
@ -72,7 +72,6 @@ impl Plugin for TuiPlugin {
|
||||||
open: true,
|
open: true,
|
||||||
})
|
})
|
||||||
.init_state::<states::TuiState>()
|
.init_state::<states::TuiState>()
|
||||||
.add_message::<ConfirmSelect>()
|
|
||||||
.configure_sets(
|
.configure_sets(
|
||||||
Update,
|
Update,
|
||||||
(TuiSet::Input, TuiSet::Layout, TuiSet::Render).chain(),
|
(TuiSet::Input, TuiSet::Layout, TuiSet::Render).chain(),
|
||||||
|
|
@ -92,28 +91,28 @@ impl Plugin for TuiPlugin {
|
||||||
.chain()
|
.chain()
|
||||||
.in_set(TuiSet::Render),
|
.in_set(TuiSet::Render),
|
||||||
)
|
)
|
||||||
.add_systems(Update, discard_tile.run_if(in_state(TurnState::Tsumo)));
|
// .add_systems(Update, discard_tile.run_if(in_state(TurnState::Tsumo)));
|
||||||
|
.add_observer(discard_tile) // TODO check run_if here feature is out
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn discard_tile(
|
fn discard_tile(
|
||||||
|
selected: On<ConfirmSelect>,
|
||||||
|
|
||||||
stdb: SpacetimeDB,
|
stdb: SpacetimeDB,
|
||||||
|
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
mut selected: MessageReader<ConfirmSelect>,
|
|
||||||
// main_player: Single<&Children, With<MainPlayer>>,
|
// main_player: Single<&Children, With<MainPlayer>>,
|
||||||
// only main player will have a Drawn tile?
|
// only main player will have a Drawn tile?
|
||||||
drawn: Single<(Entity, &TileId), With<Drawn>>,
|
drawn: Single<(Entity, &TileId), With<Drawn>>,
|
||||||
tiles: Query<&TileId>,
|
tiles: Query<&TileId>,
|
||||||
) {
|
) {
|
||||||
// FIXME why is this not consuming the messages? or is it just getting updated too frequently?
|
|
||||||
// TODO disable this when we're not current player?
|
// TODO disable this when we're not current player?
|
||||||
while let Some(message) = selected.read().next() {
|
if let Ok(tile_id) = tiles.get(selected.0) {
|
||||||
trace!("{message:?}");
|
trace!("{:?}, {tile_id:?}", selected.0);
|
||||||
if let Ok(tile_id) = tiles.get(message.0) {
|
|
||||||
stdb.reducers().discard_tile(tile_id.0).unwrap();
|
stdb.reducers().discard_tile(tile_id.0).unwrap();
|
||||||
stdb.reducers().advance_game().unwrap();
|
stdb.reducers().advance_game().unwrap();
|
||||||
commands.entity(drawn.0).remove::<Drawn>();
|
commands.entity(drawn.0).remove::<Drawn>();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,5 +12,5 @@ pub(crate) struct Hovered;
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub(crate) struct StartSelect;
|
pub(crate) struct StartSelect;
|
||||||
|
|
||||||
#[derive(Message, Debug)]
|
#[derive(Event, Debug)]
|
||||||
pub(crate) struct ConfirmSelect(pub(crate) Entity);
|
pub(crate) struct ConfirmSelect(pub(crate) Entity);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ use crate::tui::{
|
||||||
pub(crate) fn mouse(
|
pub(crate) fn mouse(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
mut mouse_reader: MessageReader<MouseMessage>,
|
mut mouse_reader: MessageReader<MouseMessage>,
|
||||||
mut event_writer: MessageWriter<ConfirmSelect>,
|
|
||||||
entities: Query<(Entity, &PickRegion)>,
|
entities: Query<(Entity, &PickRegion)>,
|
||||||
hovered: Query<(Entity, &PickRegion), With<Hovered>>,
|
hovered: Query<(Entity, &PickRegion), With<Hovered>>,
|
||||||
startselected: Query<(Entity, &PickRegion), With<StartSelect>>,
|
startselected: Query<(Entity, &PickRegion), With<StartSelect>>,
|
||||||
|
|
@ -52,7 +51,7 @@ pub(crate) fn mouse(
|
||||||
for (entity, region) in &startselected {
|
for (entity, region) in &startselected {
|
||||||
if region.area.contains(position) {
|
if region.area.contains(position) {
|
||||||
commands.entity(entity).remove::<StartSelect>();
|
commands.entity(entity).remove::<StartSelect>();
|
||||||
event_writer.write(ConfirmSelect(entity));
|
commands.trigger(ConfirmSelect(entity));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue