#[derive(Clone, Copy, Debug)]
pub struct SeedPattern {
pub width: usize,
pub height: usize,
pub cells: &'static [(usize, usize)],
}
#[derive(Clone, Copy, Debug)]
pub struct PatternPlacement {
pub pattern: SeedPattern,
pub dx: isize,
pub dy: isize,
pub rotation: u8,
pub flip: bool,
}
pub const GLIDER_PATTERN: SeedPattern = SeedPattern {
width: 3,
height: 3,
cells: &[(1, 0), (2, 1), (0, 2), (1, 2), (2, 2)],
};
pub const R_PENTOMINO_PATTERN: SeedPattern = SeedPattern {
width: 3,
height: 3,
cells: &[(1, 0), (2, 0), (0, 1), (1, 1), (1, 2)],
};
pub const ACORN_PATTERN: SeedPattern = SeedPattern {
width: 7,
height: 3,
cells: &[(1, 0), (3, 1), (0, 2), (1, 2), (4, 2), (5, 2), (6, 2)],
};
pub const LWSS_PATTERN: SeedPattern = SeedPattern {
width: 5,
height: 4,
cells: &[
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(0, 1),
(4, 1),
(4, 2),
(0, 3),
(3, 3),
],
};
pub const RANDOM_BLOB_4X4: SeedPattern = SeedPattern {
width: 4,
height: 4,
cells: &[
(1, 0),
(2, 0),
(0, 1),
(3, 1),
(1, 2),
(2, 2),
(0, 3),
(3, 3),
],
};
pub const RANDOM_BLOB_5X5: SeedPattern = SeedPattern {
width: 5,
height: 5,
cells: &[
(1, 0),
(3, 0),
(0, 1),
(2, 1),
(4, 1),
(1, 2),
(3, 2),
(0, 3),
(2, 3),
(4, 3),
(1, 4),
(3, 4),
],
};
pub const RANDOM_BLOB_6X6: SeedPattern = SeedPattern {
width: 6,
height: 6,
cells: &[
(1, 0),
(4, 0),
(0, 1),
(2, 1),
(3, 1),
(5, 1),
(1, 2),
(4, 2),
(1, 3),
(4, 3),
(0, 4),
(2, 4),
(3, 4),
(5, 4),
(1, 5),
(4, 5),
],
};