|
|
|
|
@ -373,6 +373,9 @@ fn step(
|
|
|
|
|
pieces: Query<&game::Piece, Added<game::Selected>>,
|
|
|
|
|
transitions: Query<Entity, Changed<game::Side>>,
|
|
|
|
|
curr_state: Res<State<TutorialState>>,
|
|
|
|
|
all_pieces: Query<(&Piece, &BoardIndex, &Side)>,
|
|
|
|
|
side_state: Res<State<TurnState>>,
|
|
|
|
|
mut valid_moves: Query<(&mut Visibility, &BoardIndex), With<game::ValidMove>>,
|
|
|
|
|
mut next_state: ResMut<NextState<TutorialState>>,
|
|
|
|
|
mut seen: ResMut<SeenStates>,
|
|
|
|
|
) {
|
|
|
|
|
@ -457,6 +460,30 @@ fn step(
|
|
|
|
|
}
|
|
|
|
|
// Default, empty (tutorial doesn't always need to show something)
|
|
|
|
|
else {
|
|
|
|
|
// When prompting to show a piece, find a random piece on this side and high-light it
|
|
|
|
|
all_pieces.iter()
|
|
|
|
|
.find_map(|(piece, board_index, side)| {
|
|
|
|
|
if *side == side_state.get().0 {
|
|
|
|
|
if !queen_seen && *piece == Piece::Queen {
|
|
|
|
|
Some(board_index)
|
|
|
|
|
} else if !drone_seen && *piece == Piece::Drone {
|
|
|
|
|
Some(board_index)
|
|
|
|
|
} else if !pawn_seen && *piece == Piece::Pawn {
|
|
|
|
|
Some(board_index)
|
|
|
|
|
} else {
|
|
|
|
|
None
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
None
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.iter()
|
|
|
|
|
.for_each(|hilight_index| {
|
|
|
|
|
valid_moves
|
|
|
|
|
.iter_mut()
|
|
|
|
|
.filter(|(_, board_index)| board_index == hilight_index)
|
|
|
|
|
.for_each(|(mut vis, _)| *vis = Visibility::Inherited);
|
|
|
|
|
});
|
|
|
|
|
TutorialState::PieceIntro
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|