diff --git a/src/main.rs b/src/main.rs index 7f6d901..aa13a50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,8 +7,9 @@ struct Apr { col: i32, board: Vec>, grid: Mesh, + should_update_grid: bool, // Your state here... - __TEST_state : usize + __TEST_state: usize } fn make_grid(ctx: &mut Context, r: i32, c: i32, board: &[Vec]) -> GameResult { @@ -65,13 +66,14 @@ impl Apr { col: c, grid: make_grid(_ctx, r, c, board.as_slice()).unwrap(), board: board, - __TEST_state : 0, + should_update_grid: false, + __TEST_state: 0, } } - fn set_colour(&mut self, ctx : &mut Context, r : usize, c : usize, col : u8) -> GameResult<()> { + fn set_colour(&mut self, r : usize, c : usize, col : u8) -> GameResult<()> { self.board[r][c] = col; - self.grid = make_grid(ctx, self.row, self.col, self.board.as_slice())?; + self.should_update_grid = true; Ok(()) } } @@ -83,7 +85,7 @@ impl EventHandler for Apr { for x in 0..self.row*self.col/5 { let c = self.__TEST_state % self.col as usize; let r = (self.__TEST_state / self.row as usize) % self.row as usize; - self.set_colour(_ctx, r, c, (self.board[r][c] + 1) % 8)?; + self.set_colour(r, c, (self.board[r][c] + 1) % 8)?; self.__TEST_state += 1; } Ok(()) @@ -93,6 +95,10 @@ impl EventHandler for Apr { graphics::clear(ctx, Color::new(0.5, 0.5, 0.5, 1.0)); let drawparams = graphics::DrawParam::new(); + if self.should_update_grid { + self.grid = make_grid(ctx, self.row, self.col, self.board.as_slice())?; + self.should_update_grid = false; + } graphics::draw(ctx, &self.grid, drawparams)?; // Draw code here... graphics::present(ctx)