From 14b63b5ad3a1567bed0a1cc2cefda081a3d1ac1b Mon Sep 17 00:00:00 2001 From: eraden Date: Tue, 1 Oct 2024 05:31:59 +0200 Subject: [PATCH] Fix render --- src/apps/maze_game.rs | 8 +++++--- src/apps/menu.rs | 4 ++-- src/apps/mod.rs | 19 ++++++++++++++----- src/main.rs | 7 ++----- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/apps/maze_game.rs b/src/apps/maze_game.rs index aab3c44..eb91b81 100644 --- a/src/apps/maze_game.rs +++ b/src/apps/maze_game.rs @@ -105,23 +105,25 @@ impl App for MazeGame { Button::Up if self.map.can_move(self.player_pos(), Direction::North) => { self.player.y -= 1; self.old_player = Some(player_old); + Some(Action::PartialRender) } Button::Down if self.map.can_move(self.player_pos(), Direction::South) => { self.player.y += 1; self.old_player = Some(player_old); + Some(Action::PartialRender) } Button::Left if self.map.can_move(self.player_pos(), Direction::West) => { self.player.x -= 1; self.old_player = Some(player_old); + Some(Action::PartialRender) } Button::Right if self.map.can_move(self.player_pos(), Direction::East) => { self.player.x += 1; self.old_player = Some(player_old); + Some(Action::PartialRender) } Button::Back => return Some(Action::GoToMenu), - _ => {} + _ => None, } - - None } } diff --git a/src/apps/menu.rs b/src/apps/menu.rs index c755973..1e15dab 100644 --- a/src/apps/menu.rs +++ b/src/apps/menu.rs @@ -52,13 +52,13 @@ impl App for Menu { MenuEntry::Labirynth => return None, MenuEntry::Pairs => { self.selected = MenuEntry::Labirynth; - None + Some(Action::Render) } }, Button::Down => match self.selected { MenuEntry::Labirynth => { self.selected = MenuEntry::Pairs; - None + Some(Action::Render) } MenuEntry::Pairs => None, }, diff --git a/src/apps/mod.rs b/src/apps/mod.rs index 8b65132..8897fd4 100644 --- a/src/apps/mod.rs +++ b/src/apps/mod.rs @@ -21,6 +21,8 @@ pub enum Action { GoToMenu, StartMaze, StartPairs, + Render, + PartialRender, } pub enum Application { @@ -35,8 +37,10 @@ impl Default for Application { } impl Application { - pub fn draw(&self, ctx: &mut Context) { - ctx.epaper.full_erase(); + pub fn draw(&self, ctx: &mut Context, full: bool) { + if full { + ctx.epaper.full_erase(); + } match self { Self::Menu(menu) => menu.draw(ctx), Self::Maze(maze) => maze.draw(ctx), @@ -58,17 +62,22 @@ impl Application { let mut maze = MazeGame::new(); maze.start(trng); *self = Application::Maze(maze); - self.draw(ctx); + self.draw(ctx, true); } Action::GoToMenu => { let mut menu = Menu::new(); menu.start(trng); *self = Application::Menu(menu); - self.draw(ctx); + self.draw(ctx, true); } Action::StartPairs => {} + Action::Render => { + self.draw(ctx, true); + } + Action::PartialRender => { + self.draw(ctx, false); + } }; - self.draw(ctx); } } diff --git a/src/main.rs b/src/main.rs index 29b80b8..4067ce3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -93,7 +93,7 @@ fn main() -> ! { let mut app = Application::default(); let mut trng = Trng::new(peripherals.RNG, peripherals.ADC1); - app.draw(&mut ctx); + app.draw(&mut ctx, true); app.update_and_draw(&mut ctx, &mut trng); // ctx.epaper.sleep(); @@ -102,13 +102,10 @@ fn main() -> ! { ctx.button_pressed = kbd.pressed(); if !ctx.button_pressed.is_none() { log::info!("Wake up!"); - // ctx.epaper.wake_up(); app.update_and_draw(&mut ctx, &mut trng); } - // log::info!("Sleeping for 100ms..."); - //driver.sleep().unwrap(); - delay.delay(300.millis()); + delay.delay(100.millis()); } }