From e0098a380fe858557156aff15b668d7f39321dca Mon Sep 17 00:00:00 2001 From: JOLIMAITRE Matthieu Date: Thu, 1 Sep 2022 19:42:03 +0200 Subject: [PATCH] started debug display --- patterns/blowup.txt | 3 +++ src/view.rs | 27 ++++++++++++++++++++++++--- src/world.rs | 1 + src/world/hashed_world.rs | 4 ++++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 patterns/blowup.txt diff --git a/patterns/blowup.txt b/patterns/blowup.txt new file mode 100644 index 0000000..d043118 --- /dev/null +++ b/patterns/blowup.txt @@ -0,0 +1,3 @@ +# # +# # +### diff --git a/src/view.rs b/src/view.rs index 3fef05a..a07d0fb 100644 --- a/src/view.rs +++ b/src/view.rs @@ -81,10 +81,12 @@ where loop { handle_inputs(&receiver, &mut view_origin, &mut delay); handle.set_delay(delay); + let world = handle.snapshot(); let mut canvas = Canvas::from_screen(); + dbg_layer(&mut canvas, &world, view_origin); grid_layer(&mut canvas, view_origin); - world_layer(&mut canvas, handle.snapshot(), view_origin); + world_layer(&mut canvas, &world, view_origin); title_layer(&mut canvas, handle.delay()); canvas.display(); } @@ -109,7 +111,11 @@ fn handle_inputs(receiver: &mpsc::Receiver, view_origin: &mut Pos, del Dir::Right => pos!(2 * MOVEMENT_STEP, 0), } } - InputCmd::Accelerate => *delay -= 100, + InputCmd::Accelerate => { + if *delay > 0 { + *delay -= 100 + } + } InputCmd::Decelerate => *delay += 100, } } @@ -127,7 +133,7 @@ fn grid_layer(canvas: &mut Canvas, view_origin: Pos) { }) } -fn world_layer(canvas: &mut Canvas, world: W, view_origin: Pos) +fn world_layer(canvas: &mut Canvas, world: &W, view_origin: Pos) where W: World, { @@ -161,3 +167,18 @@ fn title_layer(canvas: &mut Canvas, de: usize) { .and_then(|line| line.chars().nth(x as usize)) }) } + +fn dbg_layer(canvas: &mut Canvas, world: &W, view_origin: Pos) +where + W: World, +{ + canvas.layer(|local_pos| { + let pos = screen_pos_to_world(local_pos, view_origin); + world.dbg_is_loaded(pos).then_some('.') + }) +} + +fn screen_pos_to_world(mut pos: Pos, screen_origin: Pos) -> Pos { + pos.y *= 2; + pos + screen_origin +} diff --git a/src/world.rs b/src/world.rs index 245606c..990868a 100644 --- a/src/world.rs +++ b/src/world.rs @@ -23,6 +23,7 @@ pub trait World: Default + Clone + Send + 'static { fn get(&self, pos: Pos) -> Cell; fn set(&mut self, pos: Pos, cell: Cell); fn actives(&self) -> Vec; + fn dbg_is_loaded(&self, pos: Pos) -> bool; } pub use hashed_world::HashedWorld; diff --git a/src/world/hashed_world.rs b/src/world/hashed_world.rs index cd48e0d..3f43646 100644 --- a/src/world/hashed_world.rs +++ b/src/world/hashed_world.rs @@ -109,4 +109,8 @@ impl World for HashedWorld { }) .collect() } + + fn dbg_is_loaded(&self, pos: Pos) -> bool { + self.get_chunk(pos).is_some() + } }