Fixed placing captured pieces on the side of the board

main
Elijah C. Voigt 2 years ago
parent 54167d1f5f
commit e6be125c7d

@ -1352,7 +1352,9 @@ fn capture_piece(
// Hide piece now that animation is done // Hide piece now that animation is done
*v = Visibility::Hidden; *v = Visibility::Hidden;
t.translation = capture_translation(side, score.get(*side)); // HACK: This is dirty. Why side, but score.captures(!side)?
info!("Capture translation: ({:?}, {:?}) {:?}", side, score.captures(!*side).saturating_sub(1), t.translation);
t.translation = capture_translation(side, score.captures(!*side).saturating_sub(1));
*state = s.next(); *state = s.next();
} }

@ -117,6 +117,8 @@ pub(crate) enum GameError {
pub(crate) struct Score { pub(crate) struct Score {
a: usize, a: usize,
b: usize, b: usize,
captures_a: usize,
captures_b: usize
} }
impl Score { impl Score {
@ -127,17 +129,30 @@ impl Score {
Piece::Pawn => 1, Piece::Pawn => 1,
}; };
match side { match side {
Side::A => self.a += i, Side::A => {
Side::B => self.b += i, self.captures_a += 1;
self.a += i;
},
Side::B => {
self.captures_b += 1;
self.b += i;
}
} }
} }
pub(crate) fn get(&self, side: Side) -> usize { pub(crate) fn _get(&self, side: Side) -> usize {
match side { match side {
Side::A => self.a, Side::A => self.a,
Side::B => self.b, Side::B => self.b,
} }
} }
pub(crate) fn captures(&self, side: Side) -> usize {
match side {
Side::A => self.captures_a,
Side::B => self.captures_b,
}
}
} }
/// The board is setup like this: /// The board is setup like this:
@ -636,7 +651,7 @@ fn manage_score(
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, piece)| {
score.increment(!*side, *piece); 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));
}); });

Loading…
Cancel
Save