Higlight a piece to pick up during tutorial

main
Elijah C. Voigt 1 year ago
parent 451e73793b
commit 60b73b9889

@ -1393,13 +1393,13 @@ fn show_valid_moves(
// For each one with a ValidMove index, make it visible // For each one with a ValidMove index, make it visible
let valid_moves = board.valid_moves(*idx); let valid_moves = board.valid_moves(*idx);
info!("Showing valid moves for {:?}: {:?}", idx, valid_moves); info!("Showing valid moves for {:?}: {:?}", idx, valid_moves);
valid_moves.iter().for_each(|idx| { indicators.iter_mut().for_each(|(i, mut vis)| {
indicators.iter_mut().for_each(|(i, mut vis)| { if valid_moves.contains(i) {
if i == idx { *vis = Visibility::Inherited;
*vis = Visibility::Inherited; } else {
} *vis = Visibility::Hidden;
}); }
}) });
}); });
} }

@ -373,6 +373,9 @@ fn step(
pieces: Query<&game::Piece, Added<game::Selected>>, pieces: Query<&game::Piece, Added<game::Selected>>,
transitions: Query<Entity, Changed<game::Side>>, transitions: Query<Entity, Changed<game::Side>>,
curr_state: Res<State<TutorialState>>, 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 next_state: ResMut<NextState<TutorialState>>,
mut seen: ResMut<SeenStates>, mut seen: ResMut<SeenStates>,
) { ) {
@ -457,6 +460,30 @@ fn step(
} }
// Default, empty (tutorial doesn't always need to show something) // Default, empty (tutorial doesn't always need to show something)
else { 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 TutorialState::PieceIntro
} }
}; };

Loading…
Cancel
Save