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
*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();
}

@ -117,6 +117,8 @@ pub(crate) enum GameError {
pub(crate) struct Score {
a: usize,
b: usize,
captures_a: usize,
captures_b: usize
}
impl Score {
@ -127,17 +129,30 @@ impl Score {
Piece::Pawn => 1,
};
match side {
Side::A => self.a += i,
Side::B => self.b += i,
Side::A => {
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 {
Side::A => self.a,
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:
@ -636,7 +651,7 @@ fn manage_score(
mut debug_info: ResMut<debug::DebugInfo>,
mut score: ResMut<Score>,
) {
events.iter().for_each(|side| {
events.iter().for_each(|(side, piece)| {
score.increment(!*side, *piece);
debug_info.set("score".into(), format!("A:{}|B:{}", score.a, score.b));
});

Loading…
Cancel
Save