some more helper functions
This commit is contained in:
parent
37b57a4472
commit
3cbe0111cc
1 changed files with 24 additions and 0 deletions
|
@ -260,6 +260,23 @@ impl Cell {
|
||||||
self.out3 = o3;
|
self.out3 = o3;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// If the port is connected, it will return the position of the other cell.
|
||||||
|
pub fn is_port_dir_connected(self, m: &mut Matrix, dir: CellDir) -> Option<(usize, usize)> {
|
||||||
|
if self.has_dir_set(dir) {
|
||||||
|
if let Some(new_pos) =
|
||||||
|
dir.offs_pos((self.x as usize, self.y as usize))
|
||||||
|
{
|
||||||
|
if let Some(dst_cell) = m.get(new_pos.0, new_pos.1) {
|
||||||
|
if dst_cell.has_dir_set(dir.flip()) {
|
||||||
|
return Some(new_pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
@ -528,6 +545,13 @@ impl Matrix {
|
||||||
self.matrix[x * self.h + y] = cell;
|
self.matrix[x * self.h + y] = cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Set the cell at it's assigned position. This is basically a shorthand
|
||||||
|
/// for [Matrix::place]. As if you would call:
|
||||||
|
/// `m.place(cell.pos().0, cell.pos().1, cell)`.
|
||||||
|
pub fn place_cell(&mut self, cell: Cell) {
|
||||||
|
self.place(cell.pos().0, cell.pos().1, cell);
|
||||||
|
}
|
||||||
|
|
||||||
/// Clears the contents of the matrix. It's completely empty after this.
|
/// Clears the contents of the matrix. It's completely empty after this.
|
||||||
pub fn clear(&mut self) {
|
pub fn clear(&mut self) {
|
||||||
for cell in self.matrix.iter_mut() {
|
for cell in self.matrix.iter_mut() {
|
||||||
|
|
Loading…
Reference in a new issue