Commit | Line | Data |
---|---|---|
79914631 TW |
1 | use common::Point2D; |
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: Point2D<f64>, | |
14 | pub grid: Grid, | |
15 | walls: Vec<Vec<Point2D<isize>>>, | |
16 | } | |
17 | ||
18 | impl Level { | |
19 | // pub fn new(gravity: Point2D<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 | } |