add digit tool
This commit is contained in:
parent
465b5c40d1
commit
fc6c66ff31
5 changed files with 130 additions and 65 deletions
|
@ -89,7 +89,7 @@ impl Machine {
|
|||
// reset wires
|
||||
for y in 0..self.board.height() {
|
||||
for x in 0..self.board.width() {
|
||||
if let Tile::Powerable(_, state) = self.board.get_mut((x, y).into()) {
|
||||
if let Tile::Powerable(_, state) = self.board.get_mut_unchecked((x, y).into()) {
|
||||
*state = false;
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ impl Machine {
|
|||
continue;
|
||||
}
|
||||
let mut new_tile = None;
|
||||
let target = self.board.get_mut(next_pos);
|
||||
let target = self.board.get_mut_unchecked(next_pos);
|
||||
match target {
|
||||
Tile::Blank => {
|
||||
*target = tile;
|
||||
|
@ -175,7 +175,7 @@ impl Machine {
|
|||
Tile::Mirror(mirror) => {
|
||||
let new_dir = mirror.new_dir(dir);
|
||||
let far_pos = new_dir.step(next_pos);
|
||||
let far_target = self.board.get_mut(far_pos);
|
||||
let far_target = self.board.get_mut_unchecked(far_pos);
|
||||
if let Tile::Blank = far_target {
|
||||
*far_target = Tile::Marble {
|
||||
value,
|
||||
|
@ -189,7 +189,7 @@ impl Machine {
|
|||
}
|
||||
|
||||
if let Some(t) = new_tile {
|
||||
*self.board.get_mut(marble_pos) = t;
|
||||
*self.board.get_mut_unchecked(marble_pos) = t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ impl Machine {
|
|||
if !self.board.in_bounds(pos) {
|
||||
return;
|
||||
}
|
||||
let tile = self.board.get_mut(pos);
|
||||
let tile = self.board.get_mut_unchecked(pos);
|
||||
let front_pos = dir.step(pos);
|
||||
if let Tile::Powerable(tile, state) = tile {
|
||||
if let PTile::Trigger = tile {
|
||||
|
@ -234,7 +234,7 @@ impl Machine {
|
|||
}
|
||||
PTile::Bag => {
|
||||
if let Some(Tile::Blank) = self.board.get(front_pos) {
|
||||
*self.board.get_mut(front_pos) = Tile::Marble { value: 0, dir };
|
||||
*self.board.get_mut_unchecked(front_pos) = Tile::Marble { value: 0, dir };
|
||||
self.marbles.push(front_pos);
|
||||
}
|
||||
}
|
||||
|
@ -243,7 +243,7 @@ impl Machine {
|
|||
&& self.board.get_or_blank(front_pos).is_blank()
|
||||
{
|
||||
let value = self.input[self.input_index] as MarbleValue;
|
||||
*self.board.get_mut(front_pos) = Tile::Marble { value, dir };
|
||||
*self.board.get_mut_unchecked(front_pos) = Tile::Marble { value, dir };
|
||||
self.marbles.push(front_pos);
|
||||
self.input_index += 1;
|
||||
}
|
||||
|
@ -266,12 +266,12 @@ impl Machine {
|
|||
MathOp::Rem => val_a.checked_rem(val_b).unwrap_or_default(),
|
||||
};
|
||||
// println!("{op:?} a:{val_a} b:{val_b}");
|
||||
*self.board.get_mut(front_pos) = Tile::Marble { value: result, dir };
|
||||
*self.board.get_mut_unchecked(front_pos) = Tile::Marble { value: result, dir };
|
||||
self.marbles.push(front_pos);
|
||||
}
|
||||
}
|
||||
PTile::Flipper => {
|
||||
let m = self.board.get_mut(front_pos);
|
||||
let m = self.board.get_mut_unchecked(front_pos);
|
||||
match m {
|
||||
Tile::Powerable(PTile::Wire(wire_type), _) => {
|
||||
*wire_type = match *wire_type {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue