store tile vacancy in grid
This commit is contained in:
parent
353f5b74e5
commit
0275e0c9b5
4 changed files with 50 additions and 36 deletions
|
@ -26,7 +26,7 @@ impl Board {
|
|||
rows.push(tiles);
|
||||
}
|
||||
for line in &mut rows {
|
||||
line.resize(width, Tile::Blank);
|
||||
line.resize(width, Tile::default());
|
||||
}
|
||||
|
||||
Board::new(rows)
|
||||
|
@ -44,7 +44,7 @@ impl Board {
|
|||
}
|
||||
|
||||
pub fn new_empty(width: usize, height: usize) -> Self {
|
||||
let rows = vec![vec![Tile::Blank; width]; height];
|
||||
let rows = vec![vec![Tile::default(); width]; height];
|
||||
Self {
|
||||
rows,
|
||||
width,
|
||||
|
@ -65,7 +65,7 @@ impl Board {
|
|||
for row in &self.rows {
|
||||
for tile in row {
|
||||
match tile {
|
||||
Tile::Blank | Tile::Block => (),
|
||||
Tile::Open(OpenTile::Blank, _) | Tile::Block => (),
|
||||
_ => sum += 1,
|
||||
}
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ impl Board {
|
|||
pub fn get_blank_mut(&mut self, p: Pos) -> Option<&mut Tile> {
|
||||
if self.in_bounds(p) {
|
||||
let tile = &mut self.rows[p.y as usize][p.x as usize];
|
||||
if tile == &Tile::Blank {
|
||||
if let Tile::Open(OpenTile::Blank, _) = tile{
|
||||
return Some(tile);
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ impl Board {
|
|||
if p.x < 0 {
|
||||
let len = p.x.unsigned_abs() as usize;
|
||||
for row in &mut self.rows {
|
||||
let mut new_row = vec![Tile::Blank; len];
|
||||
let mut new_row = vec![Tile::default(); len];
|
||||
new_row.append(row);
|
||||
*row = new_row;
|
||||
}
|
||||
|
@ -156,21 +156,21 @@ impl Board {
|
|||
} else if p.x as usize >= self.width {
|
||||
let new_width = p.x as usize + 1;
|
||||
for row in &mut self.rows {
|
||||
row.resize(new_width, Tile::Blank);
|
||||
row.resize(new_width, Tile::default());
|
||||
}
|
||||
self.width = new_width;
|
||||
}
|
||||
|
||||
if p.y < 0 {
|
||||
let len = p.y.unsigned_abs() as usize;
|
||||
let mut new_rows = vec![vec![Tile::Blank; self.width]; len];
|
||||
let mut new_rows = vec![vec![Tile::default(); self.width]; len];
|
||||
new_rows.append(&mut self.rows);
|
||||
self.rows = new_rows;
|
||||
offset_y = len;
|
||||
self.height += len;
|
||||
} else if p.y as usize >= self.height {
|
||||
let new_height = p.y as usize + 1;
|
||||
self.rows.resize(new_height, vec![Tile::Blank; self.width]);
|
||||
self.rows.resize(new_height, vec![Tile::default(); self.width]);
|
||||
self.height = new_height;
|
||||
}
|
||||
(offset_x as PosInt, offset_y as PosInt)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue