Point2D -> Point
[kaka/rust-sdl-test.git] / src / core / level / mod.rs
1 use common::Point;
2 use core::render::Renderer;
3 use sprites::SpriteManager;
4
5 mod lvlgen;
6
7 pub use self::lvlgen::LevelGenerator;
8
9 ////////// LEVEL ///////////////////////////////////////////////////////////////
10
11 #[derive(Default)]
12 pub struct Level {
13     pub gravity: Point<f64>,
14     pub grid: Grid,
15     walls: Vec<Vec<Point<isize>>>,
16 }
17
18 impl Level {
19     // pub fn new(gravity: Point<f64>) -> Self {
20     //  let seed = std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs() as u32;
21     //  let mut lvl = Level { gravity, grid: Grid::generate(seed, 10), iterations: 10, walls: vec!() };
22     //  lvl.filter_regions();
23     //  lvl
24     // }
25
26     pub fn render(&mut self, renderer: &mut Renderer, _sprites: &SpriteManager) {
27         renderer.canvas().set_draw_color((64, 64, 64));
28         let size = self.grid.cell_size;
29         for x in 0..self.grid.width {
30             for y in 0..self.grid.height {
31                 if self.grid.cells[x][y] {
32                     renderer.canvas().fill_rect(sdl2::rect::Rect::new(x as i32 * size as i32, y as i32 * size as i32, size as u32, size as u32)).unwrap();
33                 }
34             }
35         }
36
37         let off = (size / 2) as i32;
38         for wall in &self.walls {
39             for w in wall.windows(2) {
40                 renderer.draw_line((w[0].x as i32 + off, w[0].y as i32 + off), (w[1].x as i32 + off, w[1].y as i32 + off), (255, 255, 0));
41             }
42             let last = wall.len() - 1;
43             renderer.draw_line((wall[0].x as i32 + off, wall[0].y as i32 + off), (wall[last].x as i32 + off, wall[last].y as i32 + off), (255, 255, 0));
44         }
45     }
46 }
47
48 ////////// GRID ////////////////////////////////////////////////////////////////
49
50 #[derive(Default)]
51 pub struct Grid {
52     pub width: usize,
53     pub height: usize,
54     pub cell_size: usize,
55     pub cells: Vec<Vec<bool>>,
56 }