summaryrefslogtreecommitdiff
path: root/src/sim/board.rs
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-13 01:56:09 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-13 01:56:09 -0700
commitfeefeecec6c6050635b2c016452dfa1529575987 (patch)
tree024cc36c2c75e10b6bfd68f29c1494830bec37df /src/sim/board.rs
parent7ce9781f86c56f932dabc3bc84b8d21d7be8fecc (diff)
big refactor for board
Diffstat (limited to 'src/sim/board.rs')
-rw-r--r--src/sim/board.rs72
1 files changed, 0 insertions, 72 deletions
diff --git a/src/sim/board.rs b/src/sim/board.rs
deleted file mode 100644
index 7af19be..0000000
--- a/src/sim/board.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-use crate::{
- config::{PIXEL_BUFFER_HEIGHT, PIXEL_BUFFER_WIDTH},
- sim::materials::MaterialId,
-};
-
-#[derive(Clone, Copy)]
-pub struct Cell {
- pub material: MaterialId,
- pub flags: u8,
-}
-
-impl Cell {
- pub fn void() -> Cell {
- Cell {
- material: MaterialId::Void,
- flags: 0,
- }
- }
- pub fn from_material(material: MaterialId) -> Cell {
- Cell { material, flags: 0 }
- }
-}
-
-pub struct Board {
- pub size_x: u32,
- pub size_y: u32,
- pub cells: Vec<Cell>,
-}
-
-impl Board {
- pub fn index_to_position(&self, idx: usize) -> (i32, i32) {
- let y = idx / self.size_x as usize;
- let x = idx % self.size_x as usize;
- let board_x = x as i32 - self.size_x as i32 / 2;
- let board_y = y as i32 - self.size_x as i32 / 2;
- return (board_x, board_y);
- }
- pub fn set_cell_at_position(&mut self, x: i32, y: i32, c: Cell) {
- // TODO: option?
- let idx = self.position_to_index(x, y).unwrap();
- self.cells[idx] = c;
- }
- pub fn cell_at_position(&self, x: i32, y: i32) -> Option<Cell> {
- Some(self.cells[self.position_to_index(x, y)?])
- }
- pub fn position_to_index(&self, x: i32, y: i32) -> Option<usize> {
- let board_x = x + self.size_x as i32 / 2;
- let board_y = y + self.size_y as i32 / 2;
-
- let on_board = board_x >= 0
- && board_x < self.size_x as i32
- && board_y >= 0
- && board_y < self.size_y as i32;
-
- if !on_board {
- return None;
- }
-
- return Some((board_y * self.size_x as i32 + board_x) as usize);
- }
- pub fn empty() -> Board {
- let size_x = PIXEL_BUFFER_WIDTH * 2;
- let size_y = PIXEL_BUFFER_HEIGHT * 2;
- let cells: Vec<Cell> = vec![Cell::void(); (size_x * size_y) as usize];
-
- Board {
- size_x,
- size_y,
- cells,
- }
- }
-}