store tile vacancy in grid
This commit is contained in:
parent
353f5b74e5
commit
0275e0c9b5
4 changed files with 50 additions and 36 deletions
|
@ -153,7 +153,7 @@ impl Machine {
|
|||
continue;
|
||||
}
|
||||
|
||||
let can_move_to = |tile| matches!(tile, Some(Tile::Blank | Tile::Digit(_)));
|
||||
let can_move_to = |tile| matches!(tile, Some(Tile::Open(_, _)));
|
||||
|
||||
let can_move_over = |tile| match tile {
|
||||
Tile::Mirror(mirror) => {
|
||||
|
@ -228,7 +228,7 @@ impl Machine {
|
|||
// resolve deletions of tiles
|
||||
for (i, event) in self.events.iter().enumerate() {
|
||||
if let Event::Remove = event {
|
||||
self.board.set(self.marbles[i], Tile::Blank);
|
||||
self.board.set(self.marbles[i], Tile::default());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,10 +268,10 @@ impl Machine {
|
|||
match event {
|
||||
Event::MoveTo(new_pos, new_dir) => {
|
||||
let mut value = *value;
|
||||
self.board.set(self.marbles[i], Tile::Blank);
|
||||
self.board.set(self.marbles[i], Tile::default());
|
||||
self.marbles[i] = new_pos;
|
||||
let new_tile = self.board.get_mut(new_pos).unwrap();
|
||||
if let Tile::Digit(n) = new_tile {
|
||||
if let Tile::Open(OpenTile::Digit(n), _) = new_tile {
|
||||
value = value.wrapping_mul(10).wrapping_add(*n as MarbleValue);
|
||||
}
|
||||
*new_tile = Tile::Marble {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue