From 82c7c7edeb63c9f9082a201822da80e6021b2a11 Mon Sep 17 00:00:00 2001 From: Mike White Date: Mon, 23 Aug 2021 21:17:39 -0400 Subject: Cleaned up a little --- model/src/board.rs | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'model/src') diff --git a/model/src/board.rs b/model/src/board.rs index 8785c99..e852063 100644 --- a/model/src/board.rs +++ b/model/src/board.rs @@ -124,25 +124,38 @@ impl CheckersBitBoard { self.turn } + /// Get the piece at the given square + /// + /// # Arguments + /// + /// * `value` - The square to get the piece from + /// + /// # Panics + /// + /// Panics if value >= 32 + const fn get(self, value: usize) -> Option { + if self.piece_at(value) { + Some(Piece::new( + unsafe { self.king_at_unchecked(value) }, + unsafe { self.color_at_unchecked(value) }, + )) + } else { + None + } + } + /// Gets the piece at a given row column coordinate /// /// # Arguments /// /// * `row` - The row. The a file is row 0 /// * `col` - The column. The first rank is column 0 - pub fn piece_at_row_col(self, row: usize, col: usize) -> Option { + pub fn get_at_row_col(self, row: usize, col: usize) -> Option { if row < 8 && col < 8 { if row % 2 == 0 { if col % 2 == 0 { let value = ((18 - ((col / 2) * 6)) + ((row / 2) * 8)) % 32; - if self.piece_at(value) { - Some(Piece::new( - self.king_at(value).unwrap(), - self.color_at(value).unwrap(), - )) - } else { - None - } + self.get(value) } else { None } @@ -163,10 +176,7 @@ impl CheckersBitBoard { _ => unreachable!(), }; let value = (column_value + row_value) % 32; - Some(Piece::new( - self.king_at(value).unwrap(), - self.color_at(value).unwrap(), - )) + self.get(value) } else { None } -- cgit v1.2.3