From 5d8e223d26f272323c554b61df0f5575060a30ac Mon Sep 17 00:00:00 2001 From: curly Date: Fri, 19 Aug 2022 14:45:00 -0600 Subject: input refactor --- src/tetris/piece.rs | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) (limited to 'src/tetris/piece.rs') diff --git a/src/tetris/piece.rs b/src/tetris/piece.rs index 19e8e6c..fc7d1c7 100644 --- a/src/tetris/piece.rs +++ b/src/tetris/piece.rs @@ -198,16 +198,20 @@ impl Piece { for pos in self.get_bits_pos() { let new_pos = pos + dir.get(); - // Detect blocks and kill only if Dir is down - if grid.get_grid_pos(new_pos) == 1 && *dir == Dir::Down { - self.kill(); - return Err(()) - } else if grid.get_grid_pos(new_pos) == 1 { - return Err(()) - } else if new_pos.0 > 19 { // Detect bottom and kill - self.kill(); - return Err(()) - } else if new_pos.1 > 9 || new_pos.1 < 0 { // Detect sides + if self.is_alive() { + // Detect blocks and kill only if Dir is down + if grid.get_grid_pos(new_pos) == 1 && *dir == Dir::Down { + self.kill(); + return Err(()) + } else if grid.get_grid_pos(new_pos) == 1 { + return Err(()) + } else if new_pos.0 > 19 { // Detect bottom and kill + self.kill(); + return Err(()) + } else if new_pos.1 > 9 || new_pos.1 < 0 { // Detect sides + return Err(()) + } + } else { return Err(()) } } @@ -315,15 +319,12 @@ impl Piece { self.alive = false } - // Return false if the piece cannot move pub fn r#move(&mut self, dir: Dir, grid: &Tetris) { // If a hit is detected, don't move // Otherwise move - if self.is_alive() { - match self.hit_detect(&dir, &grid) { - Ok(_) => self.apply_dir(&dir), - Err(_) => (), - } + match self.hit_detect(&dir, &grid) { + Ok(_) => self.apply_dir(&dir), + Err(_) => (), } } } \ No newline at end of file -- cgit v1.2.3