X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Flevel%2Fmod.rs;h=578a94e412061bf81d46cebb45854c18a2ef51b0;hb=7b724ff393ea83b7a2d43fbfa93199d0c395af92;hp=00f30090a033831768295652220507b9dc3ca856;hpb=a9eacb2b9cd3d003b21ddc9c192ec414ac63afed;p=kaka%2Frust-sdl-test.git diff --git a/src/core/level/mod.rs b/src/core/level/mod.rs index 00f3009..578a94e 100644 --- a/src/core/level/mod.rs +++ b/src/core/level/mod.rs @@ -53,35 +53,50 @@ impl Level { grid } - pub fn render(&mut self, renderer: &mut Renderer, _sprites: &SpriteManager) { - // original grid - renderer.canvas().set_draw_color((64, 64, 64)); - let size = &self.grid.scale; - for x in 0..self.grid.size.width { - for y in 0..self.grid.size.height { - if self.grid.cells[x][y] { - renderer.canvas().fill_rect(sdl2::rect::Rect::new( - x as i32 * size.width as i32, - y as i32 * size.height as i32, - size.width as u32, - size.height as u32)).unwrap(); + pub fn render(&mut self, renderer: &mut Renderer, _sprites: &SpriteManager, debug_mode: bool) { + if debug_mode { + // original grid + renderer.canvas().set_draw_color((64, 64, 64)); + let size = &self.grid.scale; + for x in 0..self.grid.size.width { + for y in 0..self.grid.size.height { + if self.grid.cells[x][y] { + renderer.canvas().fill_rect(sdl2::rect::Rect::new( + x as i32 * size.width as i32, + y as i32 * size.height as i32, + size.width as u32, + size.height as u32)).unwrap(); + } + } + } + + // wall grid + renderer.canvas().set_draw_color((0, 32, 0)); + let size = &self.wall_grid.scale; + for x in 0..self.wall_grid.size.width { + for y in 0..self.wall_grid.size.height { + if !self.wall_grid.cells[x][y].is_empty() { + let num = self.wall_grid.cells[x][y].len(); + renderer.canvas().set_draw_color((0, 32*num as u8, 0)); + renderer.canvas().fill_rect(sdl2::rect::Rect::new( + x as i32 * size.width as i32, + y as i32 * size.height as i32, + size.width as u32, + size.height as u32)).unwrap(); + } } } - } - // wall grid - renderer.canvas().set_draw_color((0, 32, 0)); - let size = &self.wall_grid.scale; - for x in 0..self.wall_grid.size.width { - for y in 0..self.wall_grid.size.height { - if !self.wall_grid.cells[x][y].is_empty() { - let num = self.wall_grid.cells[x][y].len(); - renderer.canvas().set_draw_color((0, 32*num as u8, 0)); - renderer.canvas().fill_rect(sdl2::rect::Rect::new( - x as i32 * size.width as i32, - y as i32 * size.height as i32, - size.width as u32, - size.height as u32)).unwrap(); + // wall normals + for wall in &self.walls { + for e in &wall.edges { + let c = (e.p1 + e.p2) / 2.0; + let a = (e.p2 - e.p1).to_angle() + std::f64::consts::FRAC_PI_2.radians(); + + renderer.draw_line( + <(i32, i32)>::from(c.to_i32()), + <(i32, i32)>::from((c + Point::from(a) * 10.0).to_i32()), + (0, 128, 255)); } } } @@ -89,13 +104,24 @@ impl Level { // walls for wall in &self.walls { for e in &wall.edges { - let c = (e.p1 + e.p2) / 2.0; - let a = (e.p2 - e.p1).to_angle() + std::f64::consts::FRAC_PI_2.radians(); - - renderer.draw_line( - <(i32, i32)>::from(c.to_i32()), - <(i32, i32)>::from((c + Point::from(a) * 10.0).to_i32()), - (255, 128, 0)); + if !debug_mode { + let c = (e.p1 + e.p2) / 2.0; + let a = (e.p2 - e.p1).to_angle() - std::f64::consts::FRAC_PI_2.radians(); + + renderer.draw_line( + <(i32, i32)>::from(c.to_i32()), + <(i32, i32)>::from((c + Point::from(a) * 10.0).to_i32()), + (255, 128, 0)); + + renderer.draw_line( + <(i32, i32)>::from(e.p1.to_i32()), + <(i32, i32)>::from((c + Point::from(a) * 20.0).to_i32()), + (96, 48, 0)); + renderer.draw_line( + <(i32, i32)>::from(e.p2.to_i32()), + <(i32, i32)>::from((c + Point::from(a) * 20.0).to_i32()), + (96, 48, 0)); + } renderer.draw_line( <(i32, i32)>::from(e.p1.to_i32()),