diff --git a/src/game.rs b/src/game.rs index 92b7fc1..0a55e33 100644 --- a/src/game.rs +++ b/src/game.rs @@ -123,23 +123,22 @@ impl Game { _ => (roll - 1, false), }; let dst_stack = right[dst_rel_idx].assume_stack_mut(); + let dst_true_idx = src_sq + 1 + dst_rel_idx; // src_sq + 1 was the original split boundary, so add the relative index to that to get the true index if prepend { let slice_len = src_stack.len() - slice_start; src_stack.move_slice_under(dst_stack, slice_start); for i in 0..slice_len { - self.camels[dst_stack[i]] = src_sq + dst_rel_idx + 1; + self.camels[dst_stack[i]] = dst_true_idx; } } else { let dst_prev_len = dst_stack.len(); src_stack.move_slice(dst_stack, slice_start); for i in dst_prev_len..dst_stack.len() { - self.camels[dst_stack[i]] = src_sq + dst_rel_idx + 1; + self.camels[dst_stack[i]] = dst_true_idx; } } - - self.update_positions(dst_rel_idx); } self.dice[die] = true; @@ -186,6 +185,6 @@ mod test { game.advance(Purple, 1); assert_eq!(game.dice[Purple], true); assert_eq!(game.squares[3].assume_stack(), &Stack::from([Red, Purple, Yellow])); - // B, _, G, + // B, _, G, RPY } }