|
|
|
|
@ -30,8 +30,9 @@ impl Plugin for GamePlugin {
|
|
|
|
|
hide_valid_moves.run_if(any_component_removed::<Selected>()),
|
|
|
|
|
manage_score.run_if(any_component_added::<Captured>),
|
|
|
|
|
check_endgame.run_if(resource_changed::<Board>()),
|
|
|
|
|
reset_game
|
|
|
|
|
.run_if(|keys: Res<Input<KeyCode>>| -> bool { keys.just_pressed(KeyCode::R) }),
|
|
|
|
|
reset_game.run_if(|keys: Res<Input<KeyCode>>| -> bool {
|
|
|
|
|
keys.just_pressed(KeyCode::R)
|
|
|
|
|
}),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
.add_systems(OnEnter(GameState::Endgame), set_endgame)
|
|
|
|
|
@ -663,7 +664,9 @@ fn manage_score(
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub(crate) fn set_side(mut events: Query<(&mut Side, &BoardIndex), Or<(Changed<BoardIndex>, Added<BoardIndex>)>>) {
|
|
|
|
|
pub(crate) fn set_side(
|
|
|
|
|
mut events: Query<(&mut Side, &BoardIndex), Or<(Changed<BoardIndex>, Added<BoardIndex>)>>,
|
|
|
|
|
) {
|
|
|
|
|
events
|
|
|
|
|
.iter_mut()
|
|
|
|
|
.for_each(|(mut side, idx)| match Board::side(*idx) {
|
|
|
|
|
@ -831,7 +834,13 @@ fn reset_game(
|
|
|
|
|
*score = Score { ..default() };
|
|
|
|
|
|
|
|
|
|
// Move all pieces to their correct spots
|
|
|
|
|
pieces.iter().zip(board.pieces().iter()).for_each(|(e, (i, p))| {
|
|
|
|
|
commands.entity(e).insert((i.clone(), p.clone())).remove::<Captured>();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
pieces
|
|
|
|
|
.iter()
|
|
|
|
|
.zip(board.pieces().iter())
|
|
|
|
|
.for_each(|(e, (i, p))| {
|
|
|
|
|
commands
|
|
|
|
|
.entity(e)
|
|
|
|
|
.insert((i.clone(), p.clone()))
|
|
|
|
|
.remove::<Captured>();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|