|
|
|
@ -120,10 +120,15 @@ pub(crate) struct Score {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Score {
|
|
|
|
impl Score {
|
|
|
|
fn increment(&mut self, side: Side) {
|
|
|
|
fn increment(&mut self, side: Side, piece: Piece) {
|
|
|
|
|
|
|
|
let i = match piece {
|
|
|
|
|
|
|
|
Piece::Queen => 3,
|
|
|
|
|
|
|
|
Piece::Drone => 2,
|
|
|
|
|
|
|
|
Piece::Pawn => 1,
|
|
|
|
|
|
|
|
};
|
|
|
|
match side {
|
|
|
|
match side {
|
|
|
|
Side::A => self.a += 1,
|
|
|
|
Side::A => self.a += i,
|
|
|
|
Side::B => self.b += 1,
|
|
|
|
Side::B => self.b += i,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -627,12 +632,12 @@ fn clear_endgame(query: Query<Entity, With<Endgame>>, mut commands: Commands) {
|
|
|
|
/// * All captured pieces have their captured side preserved
|
|
|
|
/// * All captured pieces have their captured side preserved
|
|
|
|
/// We can iterate over these pieces and calculate the score on the fly
|
|
|
|
/// We can iterate over these pieces and calculate the score on the fly
|
|
|
|
fn manage_score(
|
|
|
|
fn manage_score(
|
|
|
|
events: Query<&Side, (Added<Captured>, With<display3d::Display3d>)>,
|
|
|
|
events: Query<(&Side, &Piece), (Added<Captured>, With<display3d::Display3d>)>,
|
|
|
|
mut debug_info: ResMut<debug::DebugInfo>,
|
|
|
|
mut debug_info: ResMut<debug::DebugInfo>,
|
|
|
|
mut score: ResMut<Score>,
|
|
|
|
mut score: ResMut<Score>,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
events.iter().for_each(|side| {
|
|
|
|
events.iter().for_each(|side| {
|
|
|
|
score.increment(!*side);
|
|
|
|
score.increment(!*side, *piece);
|
|
|
|
debug_info.set("score".into(), format!("A:{}|B:{}", score.a, score.b));
|
|
|
|
debug_info.set("score".into(), format!("A:{}|B:{}", score.a, score.b));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|